aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java
diff options
context:
space:
mode:
authorS.nishio <nishio@densan-labs.net>2014-02-09 01:44:43 +0900
committerS.nishio <nishio@densan-labs.net>2014-02-12 21:53:08 +0900
commit49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45 (patch)
tree4280b3e868540172f3561122cff9bc2207e92856 /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java
downloadbbprb-49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45.tar.gz
initial commit
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java')
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java160
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);
+ }
+ }
+}