public UploadToS3Output uploadSourceToS3()

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());
    }