diff options
author | S.nishio <nishio@densan-labs.net> | 2014-02-09 01:44:43 +0900 |
---|---|---|
committer | S.nishio <nishio@densan-labs.net> | 2014-02-12 21:53:08 +0900 |
commit | 49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45 (patch) | |
tree | 4280b3e868540172f3561122cff9bc2207e92856 /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java | |
download | bbprb-49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45.tar.gz |
initial commit
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java')
-rw-r--r-- | src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java new file mode 100644 index 0000000..47d94dc --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java @@ -0,0 +1,160 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder; + +import antlr.ANTLRException; +import hudson.Extension; +import hudson.model.*; +import hudson.model.queue.QueueTaskFuture; +import hudson.triggers.Trigger; +import hudson.triggers.TriggerDescriptor; +import net.sf.json.JSONObject; +import org.kohsuke.stapler.DataBoundConstructor; +import org.kohsuke.stapler.StaplerRequest; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Created by nishio + */ +public class BitbucketBuildTrigger extends Trigger<AbstractProject<?, ?>> { + private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName()); + private final String projectPath; + private final String cron; + private final String username; + private final String password; + private final String repositoryOwner; + private final String repositoryName; + transient private BitbucketPullRequestsBuilder bitbucketPullRequestsBuilder; + + @Extension + public static final BitbucketBuildTriggerDescriptor descriptor = new BitbucketBuildTriggerDescriptor(); + + @DataBoundConstructor + public BitbucketBuildTrigger( + String projectPath, + String cron, + String username, + String password, + String repositoryOwner, + String repositoryName) throws ANTLRException { + super(cron); + this.projectPath = projectPath; + this.cron = cron; + this.username = username; + this.password = password; + this.repositoryOwner = repositoryOwner; + this.repositoryName = repositoryName; + } + + public String getProjectPath() { + return this.projectPath; + } + + public String getCron() { + return this.cron; + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public String getRepositoryOwner() { + return repositoryOwner; + } + + public String getRepositoryName() { + return repositoryName; + } + + @Override + public void start(AbstractProject<?, ?> project, boolean newInstance) { + try { + this.bitbucketPullRequestsBuilder = BitbucketPullRequestsBuilder.getBuilder(); + this.bitbucketPullRequestsBuilder.setProject(project); + this.bitbucketPullRequestsBuilder.setTrigger(this); + this.bitbucketPullRequestsBuilder.setupBuilder(); + } catch(IllegalStateException e) { + logger.log(Level.SEVERE, "Can't start trigger", e); + return; + } + super.start(project, newInstance); + } + + public static BitbucketBuildTrigger getTrigger(AbstractProject project) { + Trigger trigger = project.getTrigger(BitbucketBuildTrigger.class); + return (BitbucketBuildTrigger)trigger; + } + + public BitbucketPullRequestsBuilder getBuilder() { + return this.bitbucketPullRequestsBuilder; + } + + public QueueTaskFuture<?> startJob(BitbucketCause cause) { + Map<String, ParameterValue> values = new HashMap<String, ParameterValue>(); + values.put("sourceBranch", new StringParameterValue("sourceBranch", cause.getSourceBranch())); + values.put("targetBranch", new StringParameterValue("targetBranch", cause.getTargetBranch())); + values.put("repositoryOwner", new StringParameterValue("repositoryOwner", cause.getRepositoryOwner())); + values.put("repositonyName", new StringParameterValue("repositoryName", cause.getRepositoryName())); + values.put("pullRequestId", new StringParameterValue("pullRequestId", cause.getPullRequestId())); + values.put("destinationRepositoryOwner", new StringParameterValue("destinationRepositoryOwner", cause.getDestinationRepositoryOwner())); + values.put("destinationRepositoryName", new StringParameterValue("destinationRepositoryName", cause.getDestinationRepositoryName())); + values.put("pullRequestTitle", new StringParameterValue("pullRequestTitle", cause.getPullRequestTitle())); + return this.job.scheduleBuild2(0, cause, new ParametersAction(new ArrayList(values.values()))); + } + + private Map<String, ParameterValue> getDefaultParameters() { + Map<String, ParameterValue> values = new HashMap<String, ParameterValue>(); + ParametersDefinitionProperty definitionProperty = this.job.getProperty(ParametersDefinitionProperty.class); + + if (definitionProperty != null) { + for (ParameterDefinition definition : definitionProperty.getParameterDefinitions()) { + values.put(definition.getName(), definition.getDefaultParameterValue()); + } + } + return values; + } + + @Override + public void run() { + if(this.getBuilder().getProject().isDisabled()) { + logger.info("Build Skip."); + } else { + this.bitbucketPullRequestsBuilder.run(); + } + this.getDescriptor().save(); + } + + @Override + public void stop() { + super.stop(); + } + + public static final class BitbucketBuildTriggerDescriptor extends TriggerDescriptor { + public BitbucketBuildTriggerDescriptor() { + load(); + } + + @Override + public boolean isApplicable(Item item) { + return true; + } + + @Override + public String getDisplayName() { + return "Bitbucket Pull Requests Builder"; + } + + @Override + public boolean configure(StaplerRequest req, JSONObject json) throws FormException { + save(); + return super.configure(req, json); + } + } +} |