Skip to content

Commit 0debdfb

Browse files
frodeaaFrode Aannevik
authored andcommitted
Fix PR build status and update of job description
BitbucketBuildListener was not invoked on pipeline jobs Change BitbucketBuildListener to extend from RunListener<Run<?, ?>> so it will invoked to update job description and PR build result
1 parent 066fc63 commit 0debdfb

File tree

2 files changed

+40
-33
lines changed

2 files changed

+40
-33
lines changed

src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import hudson.Extension;
44
import hudson.model.AbstractBuild;
5+
import hudson.model.Job;
6+
import hudson.model.Run;
57
import hudson.model.TaskListener;
68
import hudson.model.listeners.RunListener;
9+
import hudson.triggers.Trigger;
10+
import jenkins.model.ParameterizedJobMixIn;
711

812
import javax.annotation.Nonnull;
913
import java.util.logging.Logger;
@@ -12,25 +16,43 @@
1216
* Created by nishio
1317
*/
1418
@Extension
15-
public class BitbucketBuildListener extends RunListener<AbstractBuild> {
16-
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
19+
public class BitbucketBuildListener extends RunListener<Run<?, ?>> {
20+
private static final Logger logger = Logger.getLogger(BitbucketBuildListener.class.getName());
1721

1822
@Override
19-
public void onStarted(AbstractBuild abstractBuild, TaskListener listener) {
20-
logger.info("BuildListener onStarted called.");
21-
BitbucketBuildTrigger trigger = BitbucketBuildTrigger.getTrigger(abstractBuild.getProject());
22-
if (trigger == null) {
23-
return;
23+
public void onStarted(Run r, TaskListener listener) {
24+
logger.info("BitbucketBuildListener onStarted called.");
25+
BitbucketBuilds builds = builds(r);
26+
if (builds != null) {
27+
builds.onStarted((BitbucketCause) r.getCause(BitbucketCause.class), r);
2428
}
25-
trigger.getBuilder().getBuilds().onStarted(abstractBuild);
2629
}
2730

2831
@Override
29-
public void onCompleted(AbstractBuild abstractBuild, @Nonnull TaskListener listener) {
30-
BitbucketBuildTrigger trigger = BitbucketBuildTrigger.getTrigger(abstractBuild.getProject());
31-
if (trigger == null) {
32-
return;
32+
public void onCompleted(Run r, @Nonnull TaskListener listener) {
33+
logger.info("BitbucketBuildListener onCompleted called.");
34+
BitbucketBuilds builds = builds(r);
35+
if (builds != null) {
36+
builds.onCompleted((BitbucketCause) r.getCause(BitbucketCause.class), r.getResult(), r.getUrl());
3337
}
34-
trigger.getBuilder().getBuilds().onCompleted(abstractBuild);
3538
}
39+
40+
private BitbucketBuilds builds(Run<?, ?> r) {
41+
BitbucketBuildTrigger trigger = null;
42+
if (r instanceof AbstractBuild) {
43+
trigger = BitbucketBuildTrigger.getTrigger(((AbstractBuild) r).getProject());
44+
} else {
45+
Job job = r.getParent();
46+
if (job instanceof ParameterizedJobMixIn.ParameterizedJob) {
47+
48+
for (Trigger<?> t : ((ParameterizedJobMixIn.ParameterizedJob) job).getTriggers().values()) {
49+
if (t instanceof BitbucketBuildTrigger) {
50+
trigger = (BitbucketBuildTrigger) t;
51+
}
52+
}
53+
}
54+
}
55+
return trigger == null ? null : trigger.getBuilder().getBuilds();
56+
}
57+
3658
}

src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuilds.java

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder;
22

33
import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.BuildState;
4-
import hudson.model.AbstractBuild;
5-
import hudson.model.Cause;
6-
import hudson.model.Result;
7-
import jenkins.model.Jenkins;
4+
import hudson.model.*;
85
import jenkins.model.JenkinsLocationConfiguration;
96

107
import java.io.IOException;
@@ -24,16 +21,7 @@ public BitbucketBuilds(BitbucketBuildTrigger trigger, BitbucketRepository reposi
2421
this.repository = repository;
2522
}
2623

27-
public BitbucketCause getCause(AbstractBuild build) {
28-
Cause cause = build.getCause(BitbucketCause.class);
29-
if (cause == null || !(cause instanceof BitbucketCause)) {
30-
return null;
31-
}
32-
return (BitbucketCause) cause;
33-
}
34-
35-
public void onStarted(AbstractBuild build) {
36-
BitbucketCause cause = this.getCause(build);
24+
void onStarted(BitbucketCause cause, Run<?, ?> build) {
3725
if (cause == null) {
3826
return;
3927
}
@@ -44,24 +32,21 @@ public void onStarted(AbstractBuild build) {
4432
}
4533
}
4634

47-
public void onCompleted(AbstractBuild build) {
48-
BitbucketCause cause = this.getCause(build);
35+
void onCompleted(BitbucketCause cause, Result result, String buildUrl) {
4936
if (cause == null) {
5037
return;
5138
}
52-
Result result = build.getResult();
5339
JenkinsLocationConfiguration globalConfig = new JenkinsLocationConfiguration();
5440
String rootUrl = globalConfig.getUrl();
55-
String buildUrl = "";
5641
if (rootUrl == null) {
5742
logger.warning("PLEASE SET JENKINS ROOT URL IN GLOBAL CONFIGURATION FOR BUILD STATE REPORTING");
5843
} else {
59-
buildUrl = rootUrl + build.getUrl();
44+
buildUrl = rootUrl + buildUrl;
6045
BuildState state = result == Result.SUCCESS ? BuildState.SUCCESSFUL : BuildState.FAILED;
6146
repository.setBuildStatus(cause, state, buildUrl);
6247
}
6348

64-
if ( this.trigger.getApproveIfSuccess() && result == Result.SUCCESS ) {
49+
if (this.trigger.getApproveIfSuccess() && result == Result.SUCCESS) {
6550
this.repository.postPullRequestApproval(cause.getPullRequestId());
6651
}
6752
}

0 commit comments

Comments
 (0)