diff --git a/src/main/java/com/dabsquared/gitlabjenkins/workflow/GitLabCommitStatusStep.java b/src/main/java/com/dabsquared/gitlabjenkins/workflow/GitLabCommitStatusStep.java index 8fe2bd766..be7512939 100644 --- a/src/main/java/com/dabsquared/gitlabjenkins/workflow/GitLabCommitStatusStep.java +++ b/src/main/java/com/dabsquared/gitlabjenkins/workflow/GitLabCommitStatusStep.java @@ -36,6 +36,7 @@ public class GitLabCommitStatusStep extends Step { private String name; private List builds = new ArrayList() ; private GitLabConnectionProperty connection; + private String state; @DataBoundConstructor public GitLabCommitStatusStep(String name){ @@ -55,6 +56,15 @@ public List getBuilds() { return builds; } + @DataBoundSetter + public void setState(String state){ + this.state = StringUtils.isEmpty(state) ? null : state; + } + + public String getState() { + return state; + } + @DataBoundSetter public void setBuilds(List builds) { this.builds = builds; @@ -91,16 +101,22 @@ public boolean start() throws Exception { .withCallback(new BodyExecutionCallback() { @Override public void onStart(StepContext context) { - CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), BuildState.running, name, step.builds, step.connection); - PendingBuildsAction action = run.getAction(PendingBuildsAction.class); - if (action != null) { - action.startBuild(name); + if (step.state == null) { + CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), BuildState.running, name, step.builds, step.connection); + PendingBuildsAction action = run.getAction(PendingBuildsAction.class); + if (action != null) { + action.startBuild(name); + } + } else if (step.state == "pending") { + CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), BuildState.pending, name, step.builds, step.connection); } } @Override public void onSuccess(StepContext context, Object result) { - CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), BuildState.success, name, step.builds, step.connection); + if (step == null || step.state == null || step.state != "pending") { + CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), BuildState.success, name, step.builds, step.connection); + } context.onSuccess(result); }