in src/main/java/S3DataManager.java [48:97]
public UploadToS3Output uploadSourceToS3(TaskListener listener, FilePath workspace) throws Exception {
CodeBuilderValidation.checkS3SourceUploaderConfig(workspace, s3Client, localSourcePath, workspaceSubdir);
FilePath localFile;
String zipFileMD5;
ObjectMetadata objectMetadata = new ObjectMetadata();
if(localSourcePath != null && !localSourcePath.isEmpty()) {
String sourcePath = workspace.child(localSourcePath).getRemote();
LoggingHelper.log(listener, "Local file to be uploaded to S3: " + sourcePath);
localFile = new FilePath(workspace, getTempFilePath(sourcePath));
zipFileMD5 = localFile.act(new LocalSourceCallable(workspace, localSourcePath));
} else {
if(workspaceSubdir != null && !workspaceSubdir.isEmpty()) {
workspace = workspace.child(workspaceSubdir);
}
String sourcePath = workspace.getRemote();
LoggingHelper.log(listener, "Zipping directory to upload to S3: " + sourcePath);
localFile = new FilePath(workspace, getTempFilePath(sourcePath));
zipFileMD5 = localFile.act(new ZipSourceCallable(workspace));
}
// Add MD5 checksum as S3 Object metadata
objectMetadata.setContentMD5(zipFileMD5);
objectMetadata.setContentLength(localFile.length());
if(sseAlgorithm != null && !sseAlgorithm.isEmpty()) {
objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
}
PutObjectRequest putObjectRequest;
PutObjectResult putObjectResult = new PutObjectResult();
try(InputStream zipFileInputStream = localFile.read()) {
putObjectRequest = new PutObjectRequest(s3InputBucket, s3InputKey, zipFileInputStream, objectMetadata);
LoggingHelper.log(listener, "Uploading to S3 at location " + putObjectRequest.getBucketName() + "/" + putObjectRequest.getKey() + ". MD5 checksum is " + zipFileMD5);
putObjectResult = s3Client.putObject(putObjectRequest);
} catch (SdkClientException e) {
LoggingHelper.log(listener, "Unexpected exception upon uploading source zip to S3: " + e.getMessage());
}
try {
localFile.delete();
} catch (IOException e) {
LoggingHelper.log(listener, "Unexpected exception upon deleting source file: " + e.getMessage());
}
return new UploadToS3Output(s3InputBucket + "/" + s3InputKey, putObjectResult.getVersionId());
}