Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -256,18 +256,39 @@ public void doRebuild(StaplerRequest req, StaplerResponse rsp) throws ServletExc
*/
public @CheckForNull Queue.Item run2(@Nonnull String replacementMainScript, @Nonnull Map<String,String> replacementLoadedScripts) {
List<Action> actions = new ArrayList<>();
List<Cause> causes = new ArrayList<>();

CpsFlowExecution execution = getExecutionBlocking();
if (execution == null) {
return null;
}

causes.add(new Cause.UserIdCause());
causes.add(new ReplayCause(run));
causes.addAll(extractCauses(run));

actions.add(new ReplayFlowFactoryAction(replacementMainScript, replacementLoadedScripts, execution.isSandbox()));
actions.add(new CauseAction(new Cause.UserIdCause(), new ReplayCause(run)));
actions.add(new CauseAction(causes));
for (Class<? extends Action> c : COPIED_ACTIONS) {
actions.addAll(run.getActions(c));
}

return ParameterizedJobMixIn.scheduleBuild2(run.getParent(), 0, actions.toArray(new Action[actions.size()]));
}

private List<Cause> extractCauses(Run<?,?> original) {
List<Cause> originalBuildCauses = new ArrayList<Cause>(original.getCauses());

List<Cause> newBuildCauses = new ArrayList<Cause>();
for (Cause buildCause : originalBuildCauses) {
if (!(buildCause instanceof Cause.UserIdCause)) {
newBuildCauses.add(buildCause);
}
}

return newBuildCauses;
}

/**
* Finds a set of Groovy class names which are eligible for replacement.
* @param execution the associated execution
Expand Down