Skip to content

Commit

Permalink
Add support for Jenkins 2 (incomplete)
Browse files Browse the repository at this point in the history
Replace use of AbstractProject with Job to fix
ClassCastException thrown when using the plugin
in a pipeline job

The fix is "not" complete, it remains to find a
replacement to the call AbstractProject.isDisabled
used to decide if the build should be skipped
Previously called in BitbucketBuildTrigger.run()

fixes nishio-dens#94
  • Loading branch information
Frode Aannevik authored and Frode Aannevik committed Feb 19, 2017
1 parent 5472f5a commit 7253118
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import hudson.triggers.TriggerDescriptor;
import hudson.util.ListBoxModel;
import jenkins.model.Jenkins;
import jenkins.model.ParameterizedJobMixIn;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.kohsuke.stapler.DataBoundConstructor;
Expand All @@ -33,7 +34,7 @@
/**
* Created by nishio
*/
public class BitbucketBuildTrigger extends Trigger<AbstractProject<?, ?>> {
public class BitbucketBuildTrigger extends Trigger<Job<?, ?>> {
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
private final String projectPath;
private final String cron;
Expand Down Expand Up @@ -153,7 +154,7 @@ public boolean getCancelOutdatedJobs() {
}

@Override
public void start(AbstractProject<?, ?> project, boolean newInstance) {
public void start(Job<?, ?> project, boolean newInstance) {
try {
this.bitbucketPullRequestsBuilder = BitbucketPullRequestsBuilder.getBuilder();
this.bitbucketPullRequestsBuilder.setProject(project);
Expand All @@ -175,6 +176,16 @@ public BitbucketPullRequestsBuilder getBuilder() {
return this.bitbucketPullRequestsBuilder;
}

private ParameterizedJobMixIn retrieveScheduleJob(final Job<?, ?> job) {
// TODO 1.621+ use standard method
return new ParameterizedJobMixIn() {
@Override
protected Job asJob() {
return job;
}
};
}

public QueueTaskFuture<?> startJob(BitbucketCause cause) {
Map<String, ParameterValue> values = this.getDefaultParameters();

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

return this.job.scheduleBuild2(0, cause, new ParametersAction(new ArrayList(values.values())), new RevisionParameterAction(cause.getSourceCommitHash()));
return retrieveScheduleJob(this.job).scheduleBuild2(0,
new CauseAction(cause),
new ParametersAction(new ArrayList(values.values())),
new RevisionParameterAction(cause.getSourceCommitHash()));
}

private void cancelPreviousJobsInQueueThatMatch(@Nonnull BitbucketCause bitbucketCause) {
Expand Down Expand Up @@ -239,11 +253,8 @@ private Map<String, ParameterValue> getDefaultParameters() {

@Override
public void run() {
if(this.getBuilder().getProject().isDisabled()) {
logger.info("Build Skip.");
} else {
this.bitbucketPullRequestsBuilder.run();
}
logger.log(Level.INFO, "TODO: check if project is disabled before calling bitbucketPullRequestsBuilder.run()");
this.bitbucketPullRequestsBuilder.run();
this.getDescriptor().save();
}

Expand All @@ -259,7 +270,7 @@ public BitbucketBuildTriggerDescriptor() {

@Override
public boolean isApplicable(Item item) {
return true;
return item instanceof Job && item instanceof ParameterizedJobMixIn.ParameterizedJob;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder;

import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.Pullrequest;
import hudson.model.AbstractProject;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
Expand All @@ -11,14 +10,15 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import hudson.model.Job;
import org.apache.commons.codec.binary.Hex;

/**
* Created by nishio
*/
public class BitbucketPullRequestsBuilder {
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
private AbstractProject<?, ?> project;
private Job<?, ?> project;
private BitbucketBuildTrigger trigger;
private BitbucketRepository repository;
private BitbucketBuilds builds;
Expand Down Expand Up @@ -47,15 +47,15 @@ public BitbucketPullRequestsBuilder setupBuilder() {
return this;
}

public void setProject(AbstractProject<?, ?> project) {
public void setProject(Job<?, ?> project) {
this.project = project;
}

public void setTrigger(BitbucketBuildTrigger trigger) {
this.trigger = trigger;
}

public AbstractProject<?, ?> getProject() {
public Job<?, ?> getProject() {
return this.project;
}

Expand All @@ -73,6 +73,7 @@ public String getProjectId() {
logger.log(Level.WARNING, "Failed to produce hash", exc);
}
return this.project.getFullName();

}

public BitbucketBuildTrigger getTrigger() {
Expand Down

0 comments on commit 7253118

Please sign in to comment.