Skip to content

Commit b9a2935

Browse files
aeiseleSpace Team
authored andcommitted
TW-84882: review comment: try to determine a proper VCS root instance for Space fallback revision, fix the warn log message
TW-84882: review comment: don't rely on the build configuration when determining VCS root instance to be used for the fallback revision TW-84882: review comment: try to determine a proper VCS root instance for Space fallback revision, fix the warn log message Merge-request: TC-MR-8118 Merged-by: Andreas Eisele <[email protected]>
1 parent 28c7193 commit b9a2935

File tree

5 files changed

+30
-13
lines changed

5 files changed

+30
-13
lines changed

commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/BaseCommitStatusPublisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public void setConnectionTimeout(int timeout) {
109109

110110
@NotNull
111111
@Override
112-
public Collection<BuildRevision> getFallbackRevisions() {
112+
public Collection<BuildRevision> getFallbackRevisions(@Nullable SBuild build) {
113113
return Collections.emptyList();
114114
}
115115

commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/CommitStatusPublisher.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,11 @@ public interface CommitStatusPublisher {
7777
* Currently only {@link jetbrains.buildServer.commitPublisher.space.SpacePublisher} supports this.
7878
* </p>
7979
*
80+
* @param build the current build, if any
8081
* @return empty collection if this publisher doesn't support fallback revisions
8182
*/
8283
@NotNull
83-
Collection<BuildRevision> getFallbackRevisions();
84+
Collection<BuildRevision> getFallbackRevisions(@Nullable SBuild build);
8485

8586
enum Event {
8687
STARTED("buildStarted", EventPriority.FIRST, true), FINISHED("buildFinished", true),

commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/CommitStatusPublisherListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ private boolean shouldFailBuild(@NotNull SBuildType buildType) {
645645
private Collection<BuildRevision> getQueuedBuildRevisionForVote(@NotNull BuildType buildType,
646646
@NotNull CommitStatusPublisher publisher,
647647
@NotNull BuildPromotion buildPromotion) {
648-
if (buildPromotion.isFailedToCollectChanges()) return publisher.getFallbackRevisions();
648+
if (buildPromotion.isFailedToCollectChanges()) return publisher.getFallbackRevisions(buildPromotion.getAssociatedBuild());
649649

650650
if (!((BuildPromotionEx)buildPromotion).isChangeCollectingNeeded(false)) {
651651
return getBuildRevisionForVote(publisher, buildPromotion.getRevisions());
@@ -834,7 +834,7 @@ public RetryInfo publish(Event event, BuildRevision revision, CommitStatusPublis
834834

835835
@Override
836836
public Collection<BuildRevision> getRevisions(BuildType buildType, CommitStatusPublisher publisher) {
837-
if (buildPromotion.isFailedToCollectChanges()) return publisher.getFallbackRevisions();
837+
if (buildPromotion.isFailedToCollectChanges()) return publisher.getFallbackRevisions(build);
838838
return getBuildRevisionForVote(publisher, build.getRevisions());
839839
}
840840
};

commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/space/SpacePublisher.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
import jetbrains.buildServer.serverSide.impl.LogUtil;
2929
import jetbrains.buildServer.serverSide.oauth.space.SpaceConnectDescriber;
3030
import jetbrains.buildServer.util.StringUtil;
31-
import jetbrains.buildServer.vcs.VcsModification;
32-
import jetbrains.buildServer.vcs.VcsRootInstance;
31+
import jetbrains.buildServer.vcs.*;
3332
import jetbrains.buildServer.vcshostings.http.HttpHelper;
3433
import org.apache.commons.lang.math.NumberUtils;
3534
import org.apache.http.HttpHeaders;
@@ -382,16 +381,33 @@ public void processResponse(HttpHelper.HttpResponse response) throws HttpPublish
382381
* Space is able to match safe-merge statuses by build ID.
383382
* See: TW-84882
384383
*
384+
* @param build the current build
385385
* @return singleton collection of an artificial build revision pointing to {@link #UNKNWON_GIT_SHA}
386386
*/
387387
@NotNull
388388
@Override
389-
public Collection<BuildRevision> getFallbackRevisions() {
390-
final List<VcsRootInstance> vcsRootInstances = myBuildType.getVcsRootInstances();
391-
if (vcsRootInstances.isEmpty()) {
392-
LOG.warn("unable to construct fallback build revision for Space build " + LogUtil.describe(myBuildType) + ": no VCS root instances found");
393-
return super.getFallbackRevisions();
389+
public Collection<BuildRevision> getFallbackRevisions(@Nullable SBuild build) {
390+
if (build == null) {
391+
return super.getFallbackRevisions(null);
394392
}
395-
return Collections.singletonList(new BuildRevision(vcsRootInstances.get(0), UNKNWON_GIT_SHA, "", UNKNWON_GIT_SHA));
393+
394+
final String vcsRootId = getVcsRootId();
395+
final Optional<VcsRootInstance> maybeVcsRootInstance = build.getVcsRootEntries()
396+
.stream()
397+
.map(VcsRootInstanceEntry::getVcsRoot)
398+
.filter(
399+
vcsRootInstance -> (vcsRootId != null && vcsRootIdMatches(vcsRootId, (SVcsRootEx)vcsRootInstance.getParent())) ||
400+
getSettings().isPublishingForVcsRoot(vcsRootInstance))
401+
.findAny();
402+
403+
if (!maybeVcsRootInstance.isPresent()) {
404+
LOG.warn("Unable to construct fallback build revision for Space build " + LogUtil.describe(build) + ": no suitable VCS root instance found");
405+
return super.getFallbackRevisions(build);
406+
}
407+
return Collections.singletonList(new BuildRevision(maybeVcsRootInstance.get(), UNKNWON_GIT_SHA, "", UNKNWON_GIT_SHA));
408+
}
409+
410+
private static boolean vcsRootIdMatches(@NotNull String vcsRootId, @NotNull SVcsRootEx root) {
411+
return (vcsRootId.equals(root.getExternalId()) || root.isAliasExternalId(vcsRootId) || vcsRootId.equals(String.valueOf(root.getId())));
396412
}
397413
}

commit-status-publisher-server/src/test/java/jetbrains/buildServer/commitPublisher/MockPublisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ public int compareTo(@NotNull Object o) {
369369

370370
@NotNull
371371
@Override
372-
public Collection<BuildRevision> getFallbackRevisions() {
372+
public Collection<BuildRevision> getFallbackRevisions(@Nullable SBuild build) {
373373
return myFallbackRevisions;
374374
}
375375

0 commit comments

Comments
 (0)