@Override public boolean start() throws Exception { CpsStepContext cps = (CpsStepContext) getContext(); if (parallelStep.closures.isEmpty()) { cps.get(TaskListener.class).getLogger().println("No branches to run"); cps.onSuccess(Collections.<String,Object>emptyMap()); return true; } CpsThread t = CpsThread.current(); ResultHandler r = new ResultHandler(cps, this, parallelStep.isFailFast()); for (Entry<String,Closure> e : parallelStep.closures.entrySet()) { BodyExecution body = cps.newBodyInvoker(t.getGroup().export(e.getValue())) .withStartAction(new ParallelLabelAction(e.getKey())) .withCallback(r.callbackFor(e.getKey())) .start(); bodies.add(body); } return false; }
@Override public boolean start() throws Exception { TaskAction taskAction = new TaskActionImpl(node, step.name); StepContext context = this.getContext(); if (context.hasBody()) { ((CpsBodyInvoker) context.newBodyInvoker()) .withStartAction(taskAction) .withCallback(new TaskBodyExecutionWrapper(taskAction, context)) .withDisplayName(step.name).start(); } else { LOG.warning("Task pipeline step without body is deprecated and " + "may be subject for removal in a future release"); node.addAction(taskAction); getContext().onSuccess(null); } node.addAction(new LabelAction(step.name)); if (node.getAction(TimingAction.class) == null) { node.addAction(new TimingAction()); } return false; }
@Override public boolean start() throws Exception { CpsStepContext cps = (CpsStepContext) getContext(); CpsThread t = CpsThread.current(); CpsFlowExecution execution = t.getExecution(); String text = cwd.child(step.getPath()).readToString(); String clazz = execution.getNextScriptName(step.getPath()); String newText = ReplayAction.replace(execution, clazz); if (newText != null) { listener.getLogger().println("Replacing Groovy text with edited version"); text = newText; } Script script; try { script = execution.getShell().parse(text); } catch (MultipleCompilationErrorsException e) { // Convert to a serializable exception, see JENKINS-40109. throw new CpsCompilationErrorsException(e); } // execute body as another thread that shares the same head as this thread // as the body can pause. cps.newBodyInvoker(t.getGroup().export(script)) .withDisplayName(step.getPath()) .withCallback(BodyExecutionCallback.wrap(cps)) .start(); // when the body is done, the load step is done return false; }
@Override public boolean start() throws Exception { Closure body = ScriptBytecodeAdapter.getMethodPointer(this, "bodyBlock"); CpsStepContext cps = (CpsStepContext) getContext(); CpsThread t = CpsThread.current(); cps.newBodyInvoker(t.getGroup().export(body)) .withCallback(BodyExecutionCallback.wrap(cps)) .start(); return false; } }