Skip to content

Commit ef60855

Browse files
committed
improve queue checker
1 parent 836d598 commit ef60855

File tree

3 files changed

+50
-34
lines changed

3 files changed

+50
-34
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<modelVersion>4.0.0</modelVersion>
77
<groupId>com.trimble.tekla</groupId>
88
<artifactId>TeamCityTriggerHook</artifactId>
9-
<version>4.4.0</version>
9+
<version>4.4.2</version>
1010

1111
<organization>
1212
<name>Tekla</name>

src/main/java/com/trimble/tekla/TeamcityPullrequestEventListener.java

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@
3838

3939
@Named
4040
public class TeamcityPullrequestEventListener {
41+
4142
private final TeamcityConnectionSettings connectionSettings;
4243
private final SettingsService settingsService;
4344
private final TeamcityConnector connector;
4445
private final PullRequestService pullRequestService;
45-
46+
4647
@Inject
4748
public TeamcityPullrequestEventListener(
4849
final TeamcityConnectionSettings connectionSettings,
@@ -51,34 +52,43 @@ public TeamcityPullrequestEventListener(
5152
this.connectionSettings = connectionSettings;
5253
this.settingsService = settingsService;
5354
this.pullRequestService = pullRequestService;
54-
this.connector = new TeamcityConnector(new HttpConnector());
55+
this.connector = new TeamcityConnector(new HttpConnector());
5556
}
56-
57+
5758
@EventListener
5859
public void onPullRequestOpenedEvent(final PullRequestOpenedEvent event) throws IOException, JSONException {
59-
final PullRequest pr = event.getPullRequest();
60+
final PullRequest pr = event.getPullRequest();
6061
final Repository repo = pr.getFromRef().getRepository();
61-
final Settings settings = this.settingsService.getSettings(repo);
62-
try {
63-
TriggerBuildFromPullRequest(pr, false);
64-
} catch (final Exception ex) {
65-
TeamcityLogger.logMessage(settings, "PullRequest Opened Event Failed: " + ex.getMessage());
66-
}
62+
final Settings settings = this.settingsService.getSettings(repo);
63+
64+
Runnable r = () -> {
65+
try {
66+
TriggerBuildFromPullRequest(pr, false);
67+
} catch (final IOException | JSONException ex) {
68+
TeamcityLogger.logMessage(settings, "PullRequest Opened Event Failed: " + ex.getMessage());
69+
}
70+
};
71+
72+
new Thread(r).start();
6773
}
68-
74+
6975
@EventListener
7076
public void onPullRequestParticipantsUpdatedEvent(final PullRequestParticipantsUpdatedEvent event) throws IOException, JSONException {
7177
final PullRequest pr = event.getPullRequest();
72-
final Set<PullRequestParticipant> reviewers = pr.getReviewers();
78+
final Set<PullRequestParticipant> reviewers = pr.getReviewers();
7379
final Repository repo = pr.getFromRef().getRepository();
7480
final Settings settings = this.settingsService.getSettings(repo);
75-
if(event.getAddedParticipants().size() > 0 && reviewers.size() > 0) {
81+
if (event.getAddedParticipants().size() > 0 && reviewers.size() > 0) {
7682
// trigger only when number of participations is 2 or higher (author + reviewer)
77-
try {
78-
TriggerBuildFromPullRequest(event.getPullRequest(), true);
79-
} catch (final Exception ex) {
80-
TeamcityLogger.logMessage(settings, "PullRequest Reviwer update event failed: " + ex.getMessage());
81-
}
83+
Runnable r = () -> {
84+
try {
85+
TriggerBuildFromPullRequest(event.getPullRequest(), true);
86+
} catch (final IOException | JSONException ex) {
87+
TeamcityLogger.logMessage(settings, "PullRequest Reviwer update event failed: " + ex.getMessage());
88+
}
89+
};
90+
91+
new Thread(r).start();
8292
}
8393
}
8494

@@ -93,14 +103,19 @@ public void onPullRequestRescoped(final PullRequestRescopedEvent event) throws I
93103

94104
final PullRequest pr = event.getPullRequest();
95105
final Repository repo = pr.getFromRef().getRepository();
96-
final Settings settings = this.settingsService.getSettings(repo);
97-
try {
98-
TriggerBuildFromPullRequest(pr, false);
99-
} catch (final Exception ex) {
100-
TeamcityLogger.logMessage(settings, "PullRequest Rescoped Event Failed: " + ex.getMessage());
101-
}
106+
final Settings settings = this.settingsService.getSettings(repo);
107+
108+
Runnable r = () -> {
109+
try {
110+
TriggerBuildFromPullRequest(pr, false);
111+
} catch (final IOException | JSONException ex) {
112+
TeamcityLogger.logMessage(settings, "PullRequest Rescoped Event Failed: " + ex.getMessage());
113+
}
114+
};
115+
116+
new Thread(r).start();
102117
}
103-
118+
104119
private void TriggerBuildFromPullRequest(final PullRequest pr, Boolean UpdatedReviewers) throws IOException, JSONException {
105120
final Repository repo = pr.getFromRef().getRepository();
106121
final Settings settings = this.settingsService.getSettings(repo);
@@ -120,33 +135,32 @@ private void TriggerBuildFromPullRequest(final PullRequest pr, Boolean UpdatedRe
120135
}
121136

122137
Set triggeredBuilds = new HashSet();
123-
138+
124139
final ArrayList<String> changes = ChangesetService.GetChangedFiles(pr, pullRequestService);
125140
final Trigger[] configurations = Trigger.GetBuildConfigurationsFromBranch(repositoryTriggersJson, branch);
126141
for (final Trigger buildConfig : configurations) {
127142

128-
129143
if (buildConfig.isTriggerOnPullRequest()) {
130-
if(UpdatedReviewers && buildConfig.isTriggerWhenNoReviewers()) {
144+
if (UpdatedReviewers && buildConfig.isTriggerWhenNoReviewers()) {
131145
TeamcityLogger.logMessage(settings, "Skip For Update Reviewers: " + buildConfig.getBranchConfig());
132146
// we dont want to build when reviewers were updated and we allow to trigger when no reviwers are defined
133147
continue;
134148
}
135-
149+
136150
if (!areParticipants && !buildConfig.isTriggerWhenNoReviewers()) {
137151
// we dont want to build if there are no participants
138152
TeamcityLogger.logMessage(settings, "Skip: " + buildConfig.getBranchConfig());
139153
continue;
140154
}
141-
155+
142156
if (triggeredBuilds.contains(buildConfig.getTarget())) {
143157
continue;
144158
}
145-
159+
146160
if (!ExclusionTriggers.ShouldTriggerOnListOfFiles(buildConfig.gettriggerInclusion(), buildConfig.gettriggerExclusion(), changes)) {
147161
continue;
148162
}
149-
163+
150164
TeamcityLogger.logMessage(settings, "Trigger BuildId: " + buildConfig.getTarget());
151165
try {
152166
if (this.connector.IsInQueue(conf, buildConfig.getTarget(), buildConfig.getBranchConfig(), settings)) {
@@ -185,7 +199,7 @@ private void TriggerBuildFromPullRequest(final PullRequest pr, Boolean UpdatedRe
185199
this.connector.ReQueueBuild(conf, id, settings, false);
186200
}
187201
}
188-
202+
189203
// at this point all builds were finished, so we need to trigger
190204
this.connector.QueueBuild(
191205
conf,

src/main/java/com/trimble/tekla/TeamcityTriggerHook.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,10 @@ public void postUpdate(
118118
}
119119
} catch (NoSuchCommitException ex) {
120120
TeamcityLogger.logMessage(context, "No commit Exception: " + ex.getCommitId());
121+
TeamcityLogger.logMessage(context, "Stacktrace: " + ex.getStackTrace());
121122
} catch (IOException ex) {
122123
TeamcityLogger.logMessage(context, "Failed to trigger: " + ex.getMessage());
124+
TeamcityLogger.logMessage(context, "Stacktrace: " + ex.getStackTrace());
123125
}
124126
}
125127
}

0 commit comments

Comments
 (0)