diff options
author | Frode Aannevik <frode.aa@gmail.com> | 2017-02-12 17:05:15 +0100 |
---|---|---|
committer | Frode Aannevik <frode.aannevik@bambora.com> | 2017-02-20 00:19:30 +0100 |
commit | 0debdfbdf1846f74928e0c4e932475b77e655a06 (patch) | |
tree | 0dffac3389f7571da134c4dc64bca749eae35bfb /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java | |
parent | 066fc6386f08729ac2861e29b4bba91427541724 (diff) | |
download | bbprb-0debdfbdf1846f74928e0c4e932475b77e655a06.tar.gz |
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
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java')
-rw-r--r-- | src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java index 95931ad..9e067e7 100644 --- a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildListener.java @@ -2,8 +2,12 @@ package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder; import hudson.Extension; import hudson.model.AbstractBuild; +import hudson.model.Job; +import hudson.model.Run; import hudson.model.TaskListener; import hudson.model.listeners.RunListener; +import hudson.triggers.Trigger; +import jenkins.model.ParameterizedJobMixIn; import javax.annotation.Nonnull; import java.util.logging.Logger; @@ -12,25 +16,43 @@ import java.util.logging.Logger; * Created by nishio */ @Extension -public class BitbucketBuildListener extends RunListener<AbstractBuild> { - private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName()); +public class BitbucketBuildListener extends RunListener<Run<?, ?>> { + private static final Logger logger = Logger.getLogger(BitbucketBuildListener.class.getName()); @Override - public void onStarted(AbstractBuild abstractBuild, TaskListener listener) { - logger.info("BuildListener onStarted called."); - BitbucketBuildTrigger trigger = BitbucketBuildTrigger.getTrigger(abstractBuild.getProject()); - if (trigger == null) { - return; + public void onStarted(Run r, TaskListener listener) { + logger.info("BitbucketBuildListener onStarted called."); + BitbucketBuilds builds = builds(r); + if (builds != null) { + builds.onStarted((BitbucketCause) r.getCause(BitbucketCause.class), r); } - trigger.getBuilder().getBuilds().onStarted(abstractBuild); } @Override - public void onCompleted(AbstractBuild abstractBuild, @Nonnull TaskListener listener) { - BitbucketBuildTrigger trigger = BitbucketBuildTrigger.getTrigger(abstractBuild.getProject()); - if (trigger == null) { - return; + public void onCompleted(Run r, @Nonnull TaskListener listener) { + logger.info("BitbucketBuildListener onCompleted called."); + BitbucketBuilds builds = builds(r); + if (builds != null) { + builds.onCompleted((BitbucketCause) r.getCause(BitbucketCause.class), r.getResult(), r.getUrl()); } - trigger.getBuilder().getBuilds().onCompleted(abstractBuild); } + + private BitbucketBuilds builds(Run<?, ?> r) { + BitbucketBuildTrigger trigger = null; + if (r instanceof AbstractBuild) { + trigger = BitbucketBuildTrigger.getTrigger(((AbstractBuild) r).getProject()); + } else { + Job job = r.getParent(); + if (job instanceof ParameterizedJobMixIn.ParameterizedJob) { + + for (Trigger<?> t : ((ParameterizedJobMixIn.ParameterizedJob) job).getTriggers().values()) { + if (t instanceof BitbucketBuildTrigger) { + trigger = (BitbucketBuildTrigger) t; + } + } + } + } + return trigger == null ? null : trigger.getBuilder().getBuilds(); + } + } |