|
2 | 2 |
|
3 | 3 | import hudson.Extension;
|
4 | 4 | import hudson.model.AbstractBuild;
|
| 5 | +import hudson.model.Job; |
| 6 | +import hudson.model.Run; |
5 | 7 | import hudson.model.TaskListener;
|
6 | 8 | import hudson.model.listeners.RunListener;
|
| 9 | +import hudson.triggers.Trigger; |
| 10 | +import jenkins.model.ParameterizedJobMixIn; |
7 | 11 |
|
8 | 12 | import javax.annotation.Nonnull;
|
9 | 13 | import java.util.logging.Logger;
|
|
12 | 16 | * Created by nishio
|
13 | 17 | */
|
14 | 18 | @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()); |
17 | 21 |
|
18 | 22 | @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); |
24 | 28 | }
|
25 |
| - trigger.getBuilder().getBuilds().onStarted(abstractBuild); |
26 | 29 | }
|
27 | 30 |
|
28 | 31 | @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()); |
33 | 37 | }
|
34 |
| - trigger.getBuilder().getBuilds().onCompleted(abstractBuild); |
35 | 38 | }
|
| 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 | + |
36 | 58 | }
|
0 commit comments