private void proccessPublishing()

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