Non ho mai lavorato con il plugin S3 per Jenkins (ma ora che so che esiste, potrei provarlo), però, guardando il codice, sembra che tu possa fare solo quello che vuoi usando una soluzione alternativa .
Ecco ciò che il codice del plugin effettivo non (tratto da github) --I rimosso le parti del codice che non sono rilevanti per il bene di leggibilità:
classe hudson.plugins.s3.S3Profile
, metodo upload
:
final Destination dest = new Destination(bucketName,filePath.getName());
getClient().putObject(dest.bucketName, dest.objectName, filePath.read(), metadata);
Ora, se si dà un'occhiata in JavaDoc hudson.FilePath.getName()
s':
Ottiene solo la parte del nome del file senza directory.
Ora, un'occhiata in costruttore di 's il hudson.plugins.s3.Destination
:
public Destination(final String userBucketName, final String fileName) {
if (userBucketName == null || fileName == null)
throw new IllegalArgumentException("Not defined for null parameters: "+userBucketName+","+fileName);
final String[] bucketNameArray = userBucketName.split("/", 2);
bucketName = bucketNameArray[0];
if (bucketNameArray.length > 1) {
objectName = bucketNameArray[1] + "/" + fileName;
} else {
objectName = fileName;
}
}
Il JavaDoc Destination
classe dice:
La convenzione implementato è che a/in un nome benna è usato per costruire una struttura nel nome dell'oggetto. Cioè, una put di file.txt nel nome bucket di "mybucket/v1" causerà l'oggetto "v1/file.txt" da creare nel mybucket.
Conclusione: le strisce filePath.getName()
annullare qualsiasi prefisso (S3 non ha alcuna directory, ma piuttosto prefissi, vedere this e this thread per maggiori informazioni) si aggiungono al file. Se hai davvero bisogno di mettere i tuoi file in una "cartella" (cioè con un prefisso specifico che contiene una barra (/
), ti suggerisco di aggiungere questo prefisso alla fine del nome del bucket, come spiegato nella classe Destination
JavaDoc .
Vorrei suggerire di utilizzare t lui JClouds Plug in ora. – Aron
Anche JClouds non è eccezionale; continua a non riuscire con un errore oscuro sullo streaming. Il ridimensionamento di uno strumento CLI per questo è ridicolo ... – aendrew
s3cmd non è ottimale in quanto richiede un archivio separato per le credenziali di aws. C'è merito per l'uso del plugin s3 di profili s3 per l'autenticazione. Concorda sul fatto che preservare la gerarchia degli artefatti sarebbe preferibile al comportamento corrente. –