Ich habe noch nie mit dem S3-Plugin für Jenkins gearbeitet (aber jetzt, da ich weiß, dass es existiert, könnte ich es versuchen), obwohl es scheint, können Sie nur tun, was Sie wollen mit einem Workaround .
Hier ist, was die eigentliche Plugin-Code ist (von Github genommen) -I die Teile des Codes entfernt, die nicht relevant für die aus Gründen der Lesbarkeit sind:
Klasse hudson.plugins.s3.S3Profile
, Methode upload
:
final Destination dest = new Destination(bucketName,filePath.getName());
getClient().putObject(dest.bucketName, dest.objectName, filePath.read(), metadata);
Nun, wenn Sie einen Blick in hudson.FilePath.getName()
‚s JavaDoc:
Ruft nur den Dateinamen Teil ohne Verzeichnisse. Jetzt
, werfen Sie einen Blick in die hudson.plugins.s3.Destination
‚Konstruktor:
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;
}
}
Die Destination
Klasse JavaDoc sagt:
Die Konvention hier implementiert ist, dass ein/in einen Eimer Name ist verwendet, um eine Struktur im Objektnamen zu konstruieren. Das heißt, ein put von file.txt in den Bucket-Namen "mybucket/v1" bewirkt, dass das Objekt "v1/file.txt" im mybucket erstellt wird.
Fazit: Die filePath.getName()
Anruf Streifen aus jedem Präfix (S3 kein Verzeichnis, sondern vielmehr Präfixe finden this und this Themen für weitere Informationen) Sie zu der Datei hinzuzufügen. Wenn Sie Ihre Dateien wirklich in einen "Ordner" (dh mit einem speziellen Präfix, das einen Schrägstrich (/
) enthält) legen, sollten Sie dieses Präfix am Ende Ihres Bucket-Namens hinzufügen, wie in der JavaDoc-Klasse Destination
erläutert .
Ich würde vorschlagen, t zu verwenden er JClouds Jetzt einstecken. – Aron
JClouds ist auch nicht großartig; Es kommt immer wieder zu einem obskuren Fehler beim Streaming. Das Zurückfallen zu einem CLI-Werkzeug dafür ist lächerlich ... – aendrew
s3cmd ist nicht optimal, da es einen separaten Speicher für die aws-Anmeldeinformationen benötigt. Die Verwendung von s3-Profilen für die Authentifizierung ist für das s3-Plugin von Vorteil. Stimmen Sie zu, dass das Beibehalten der Artefakthierarchie dem aktuellen Verhalten vorzuziehen wäre. –