Tôi chưa bao giờ làm việc với plugin S3 cho Jenkins (nhưng bây giờ tôi biết nó tồn tại, tôi có thể thử), mặc dù, nhìn vào mã, có vẻ như bạn chỉ có thể làm những gì bạn muốn bằng cách sử dụng workaround .
Đây là những gì mã Plugin thực tế không (lấy từ github) --Tôi loại bỏ các phần của mã mà không liên quan vì lợi ích của khả năng đọc:
lớp hudson.plugins.s3.S3Profile
, phương pháp upload
:
final Destination dest = new Destination(bucketName,filePath.getName());
getClient().putObject(dest.bucketName, dest.objectName, filePath.read(), metadata);
Bây giờ nếu bạn có một cái nhìn vào javadoc hudson.FilePath.getName()
's:
Gets chỉ phần tên tập tin mà không cần danh bạ.
Bây giờ, hãy xem vào 's hudson.plugins.s3.Destination
constructor:
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;
}
}
Các javadoc Destination
lớp nói:
Quy ước thực hiện ở đây là a/trong một tên xô là được sử dụng để xây dựng một cấu trúc trong tên đối tượng. Tức là, một tập tin file.txt vào tên của "mybucket/v1" sẽ khiến đối tượng "v1/file.txt" được tạo trong mybucket.
Kết luận: các filePath.getName()
gọi dải tắt bất kỳ tiền tố (S3 không có bất kì thư mục, nhưng thay vì các tiền tố, xem this và this đề để biết thêm) bạn thêm vào các tập tin. Nếu bạn thực sự cần đưa tệp của mình vào "thư mục" (nghĩa là có tiền tố cụ thể có dấu gạch chéo (/
)), tôi khuyên bạn nên thêm tiền tố này vào cuối tên nhóm của bạn, như được giải thích trong lớp JavaDoc Destination
.
Tôi khuyên bạn nên sử dụng t anh ấy JClouds Cắm ngay bây giờ. – Aron
JClouds cũng không tuyệt vời; nó tiếp tục thất bại với một lỗi tối nghĩa về phát trực tuyến. Có dự phòng cho một công cụ CLI cho điều này là lố bịch ... – aendrew
s3cmd không phải là tối ưu vì nó đòi hỏi một cửa hàng riêng biệt cho các thông tin aws. Có lợi cho việc sử dụng s3 của plugin s3 hồ sơ để xác thực. Đồng ý rằng việc bảo quản phân cấp giả tạo sẽ thích hợp hơn với hành vi hiện tại. –