in commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/CommitStatusPublisherListener.java [644:685]
private void proccessPublishing(Event event, BuildPromotion buildPromotion, PublishingProcessor publishingProcessor) {
SBuildType buildType = buildPromotion.getBuildType();
if (buildType == null) {
LOG.warn("Build status has not been published: build type not found, id: " + buildPromotion.getBuildTypeExternalId());
return;
}
Map<String, CommitStatusPublisher> publishers = getPublishers(buildPromotion);
LOG.debug(() -> "Event: " + event.getName() + ", build promotion " + LogUtil.describe(buildPromotion) + ", publishers: " + publishers.values());
for (CommitStatusPublisher publisher : publishers.values()) {
if (!publisher.isEventSupported(event))
continue;
if (isPublishingDisabled(buildPromotion)) {
logStatusNotPublished(event, LogUtil.describe(buildPromotion), publisher, "commit status publishing is disabled");
continue;
}
Collection<BuildRevision> revisions = publishingProcessor.getRevisions(buildType, publisher);
if (revisions.isEmpty()) {
logStatusNotPublished(event, LogUtil.describe(buildPromotion), publisher, "no compatible revisions found");
continue;
}
myProblems.clearProblem(publisher);
List<RetryInfo> retryResults = revisions.stream().map(revision -> publishingProcessor.publish(event, revision, publisher)).collect(Collectors.toList());
RetryInfo retryInfo = new RetryInfo();
for (RetryInfo info : retryResults) {
if (info.shouldRetry) {
retryInfo = info;
break;
}
}
if (retryInfo.shouldRetry) {
if (event == Event.QUEUED) {
submitTaskForQueuedBuild(event, buildPromotion, retryInfo.newDelay);
} else {
final SBuild build = buildPromotion.getAssociatedBuild();
if (build != null) {
submitTaskForBuild(event, build, retryInfo.newDelay);
}
}
}
}
}