in src/main/java/com/microsoft/jenkins/appservice/commands/DockerBuildCommand.java [90:134]
public String call() throws AzureCloudException {
final boolean[] hasError = {false};
final DockerClient client = dockerClientBuilder.build(dockerBuildInfo.getAuthConfig());
final BuildImageResultCallback callback = new BuildImageResultCallback() {
@Override
public void onNext(final BuildResponseItem buildResponseItem) {
if (buildResponseItem.isBuildSuccessIndicated()) {
listener.getLogger().println(buildResponseItem.getStream());
dockerBuildInfo.setImageId(buildResponseItem.getImageId());
} else if (buildResponseItem.isErrorIndicated()) {
listener.getLogger().println("Build docker image failed");
ResponseItem.ErrorDetail detail = buildResponseItem.getErrorDetail();
if (detail != null) {
listener.getLogger().println("The error detail: " + detail.toString());
}
hasError[0] = true;
} else if (StringUtils.isNotBlank(buildResponseItem.getStream())) {
listener.getLogger().println(buildResponseItem.getStream());
}
super.onNext(buildResponseItem);
}
@Override
public void onError(Throwable throwable) {
listener.getLogger().println("Fail to build docker image:" + throwable.getMessage());
hasError[0] = true;
super.onError(throwable);
}
};
try {
client.buildImageCmd(new File(dockerfile.getRemote()))
.withTags(Sets.newHashSet(image))
.exec(callback)
.awaitCompletion();
} catch (InterruptedException e) {
throw new AzureCloudException(e);
}
if (hasError[0]) {
throw new AzureCloudException("Fail to build docker image");
}
return dockerBuildInfo.getImageId();
}