Skip to content

Commit d7700dc

Browse files
authored
Merge pull request #97 from frodeaa/jenkins2-pipeline-support-94
Support Jenkins2 pipeline
2 parents 56abec8 + 0debdfb commit d7700dc

File tree

5 files changed

+71
-48
lines changed

5 files changed

+71
-48
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.jenkins-ci.plugins</groupId>
55
<artifactId>plugin</artifactId>
6-
<version>1.509.4</version><!-- which version of Jenkins is this plugin built against? -->
6+
<version>1.596.1</version>
77
</parent>
88

99
<artifactId>bitbucket-pullrequest-builder</artifactId>

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/BitbucketBuildTrigger.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import hudson.triggers.TriggerDescriptor;
1515
import hudson.util.ListBoxModel;
1616
import jenkins.model.Jenkins;
17+
import jenkins.model.ParameterizedJobMixIn;
1718
import net.sf.json.JSONObject;
1819
import org.apache.commons.lang.StringUtils;
1920
import org.kohsuke.stapler.DataBoundConstructor;
@@ -33,7 +34,7 @@
3334
/**
3435
* Created by nishio
3536
*/
36-
public class BitbucketBuildTrigger extends Trigger<AbstractProject<?, ?>> {
37+
public class BitbucketBuildTrigger extends Trigger<Job<?, ?>> {
3738
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
3839
private final String projectPath;
3940
private final String cron;
@@ -153,7 +154,7 @@ public boolean getCancelOutdatedJobs() {
153154
}
154155

155156
@Override
156-
public void start(AbstractProject<?, ?> project, boolean newInstance) {
157+
public void start(Job<?, ?> project, boolean newInstance) {
157158
try {
158159
this.bitbucketPullRequestsBuilder = BitbucketPullRequestsBuilder.getBuilder();
159160
this.bitbucketPullRequestsBuilder.setProject(project);
@@ -175,6 +176,16 @@ public BitbucketPullRequestsBuilder getBuilder() {
175176
return this.bitbucketPullRequestsBuilder;
176177
}
177178

179+
private ParameterizedJobMixIn retrieveScheduleJob(final Job<?, ?> job) {
180+
// TODO 1.621+ use standard method
181+
return new ParameterizedJobMixIn() {
182+
@Override
183+
protected Job asJob() {
184+
return job;
185+
}
186+
};
187+
}
188+
178189
public QueueTaskFuture<?> startJob(BitbucketCause cause) {
179190
Map<String, ParameterValue> values = this.getDefaultParameters();
180191

@@ -183,7 +194,10 @@ public QueueTaskFuture<?> startJob(BitbucketCause cause) {
183194
abortRunningJobsThatMatch(cause);
184195
}
185196

186-
return this.job.scheduleBuild2(0, cause, new ParametersAction(new ArrayList(values.values())), new RevisionParameterAction(cause.getSourceCommitHash()));
197+
return retrieveScheduleJob(this.job).scheduleBuild2(0,
198+
new CauseAction(cause),
199+
new ParametersAction(new ArrayList(values.values())),
200+
new RevisionParameterAction(cause.getSourceCommitHash()));
187201
}
188202

189203
private void cancelPreviousJobsInQueueThatMatch(@Nonnull BitbucketCause bitbucketCause) {
@@ -239,12 +253,13 @@ private Map<String, ParameterValue> getDefaultParameters() {
239253

240254
@Override
241255
public void run() {
242-
if(this.getBuilder().getProject().isDisabled()) {
243-
logger.info("Build Skip.");
244-
} else {
245-
this.bitbucketPullRequestsBuilder.run();
246-
}
247-
this.getDescriptor().save();
256+
Job<?,?> project = this.getBuilder().getProject();
257+
if (project instanceof AbstractProject && ((AbstractProject)project).isDisabled()) {
258+
logger.info("Build Skip.");
259+
} else {
260+
this.bitbucketPullRequestsBuilder.run();
261+
this.getDescriptor().save();
262+
}
248263
}
249264

250265
@Override
@@ -259,7 +274,7 @@ public BitbucketBuildTriggerDescriptor() {
259274

260275
@Override
261276
public boolean isApplicable(Item item) {
262-
return true;
277+
return item instanceof Job && item instanceof ParameterizedJobMixIn.ParameterizedJob;
263278
}
264279

265280
@Override

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
}

src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketPullRequestsBuilder.java

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

33
import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.Pullrequest;
4-
import hudson.model.AbstractProject;
54

65
import java.io.UnsupportedEncodingException;
76
import java.security.MessageDigest;
@@ -11,14 +10,15 @@
1110
import java.util.logging.Level;
1211
import java.util.logging.Logger;
1312

13+
import hudson.model.Job;
1414
import org.apache.commons.codec.binary.Hex;
1515

1616
/**
1717
* Created by nishio
1818
*/
1919
public class BitbucketPullRequestsBuilder {
2020
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
21-
private AbstractProject<?, ?> project;
21+
private Job<?, ?> project;
2222
private BitbucketBuildTrigger trigger;
2323
private BitbucketRepository repository;
2424
private BitbucketBuilds builds;
@@ -47,15 +47,15 @@ public BitbucketPullRequestsBuilder setupBuilder() {
4747
return this;
4848
}
4949

50-
public void setProject(AbstractProject<?, ?> project) {
50+
public void setProject(Job<?, ?> project) {
5151
this.project = project;
5252
}
5353

5454
public void setTrigger(BitbucketBuildTrigger trigger) {
5555
this.trigger = trigger;
5656
}
5757

58-
public AbstractProject<?, ?> getProject() {
58+
public Job<?, ?> getProject() {
5959
return this.project;
6060
}
6161

@@ -73,6 +73,7 @@ public String getProjectId() {
7373
logger.log(Level.WARNING, "Failed to produce hash", exc);
7474
}
7575
return this.project.getFullName();
76+
7677
}
7778

7879
public BitbucketBuildTrigger getTrigger() {

0 commit comments

Comments
 (0)