in aws-codepipeline-agent/src/main/java/jetbrains/buildServer/codepipeline/CodePipelineBuildListener.java [152:202]
private void processJobOutput(@NotNull final AgentRunningBuild build, @NotNull final BuildFinishedStatus buildStatus) {
if (myJobID == null) return;
AWSCommonParams.withAWSClients(build.getSharedConfigParameters(), new AWSCommonParams.WithAWSClients<Void, RuntimeException>() {
@Nullable
@Override
public Void run(@NotNull AWSClients clients) throws RuntimeException {
AWSCodePipelineClient codePipelineClient = null;
try {
codePipelineClient = clients.createCodePipeLineClient();
if (build.isBuildFailingOnServer()) {
publishJobFailure(codePipelineClient, build, "Build failed");
} else if (BuildFinishedStatus.INTERRUPTED == buildStatus) {
publishJobFailure(codePipelineClient, build, "Build interrupted");
} else {
final Map<String, String> params = build.getSharedConfigParameters();
final JobData jobData = getJobData(codePipelineClient, params);
final List<Artifact> outputArtifacts = jobData.getOutputArtifacts();
if (outputArtifacts.isEmpty()) {
LOG.debug(msgForBuild("No output artifacts expected for the job with ID: " + myJobID, build));
} else {
final File artifactOutputFolder = new File(params.get(ARTIFACT_OUTPUT_FOLDER_CONFIG_PARAM));
S3Util.withTransferManager(getArtifactS3Client(jobData.getArtifactCredentials(), params), new S3Util.WithTransferManager<Upload>() {
@NotNull
@Override
public Collection<Upload> run(@NotNull final TransferManager manager) throws Throwable {
return CollectionsUtil.convertCollection(outputArtifacts, new Converter<Upload, Artifact>() {
@Override
public Upload createFrom(@NotNull Artifact artifact) {
final File buildArtifact = getBuildArtifact(artifact, jobData.getPipelineContext().getPipelineName(), artifactOutputFolder, build);
final S3ArtifactLocation s3Location = artifact.getLocation().getS3Location();
build.getBuildLogger().message("Uploading job output artifact " + s3Location.getObjectKey() + " from " + buildArtifact.getAbsolutePath());
return manager.upload(new PutObjectRequest(s3Location.getBucketName(), s3Location.getObjectKey(), buildArtifact)
.withSSEAwsKeyManagementParams(getSSEAwsKeyManagementParams(jobData.getEncryptionKey())));
}
});
}
});
}
publishJobSuccess(codePipelineClient, build);
}
} catch (Throwable e) {
failOnException(codePipelineClient, build, e);
}
return null;
}
});
}