/** Function to start schedule a single configuration * * This function schedule a build of a configuration passing all of the Matrixchild actions * that are present in the parent build. * * @param exec Matrix build that is the parent of the configuration * @param c Configuration to schedule */ private void scheduleConfigurationBuild(MatrixBuildExecution exec, MatrixConfiguration c) { MatrixBuild build = exec.getBuild(); exec.getListener().getLogger().println(Messages.MatrixBuild_Triggering(ModelHyperlinkNote.encodeTo(c))); // filter the parent actions for those that can be passed to the individual jobs. List<Action> childActions = new ArrayList<Action>(build.getActions(MatrixChildAction.class)); childActions.addAll(build.getActions(ParametersAction.class)); // used to implement MatrixChildAction c.scheduleBuild(childActions, new UpstreamCause((Run)build)); }
private MatrixRun waitForCompletion(MatrixBuildExecution exec, MatrixConfiguration c) throws InterruptedException, IOException { BuildListener listener = exec.getListener(); String whyInQueue = ""; long startTime = System.currentTimeMillis();
private void filterConfigurations( final MatrixBuildExecution execution, final Collection<MatrixConfiguration> touchStoneConfigurations, final Collection<MatrixConfiguration> delayedConfigurations ) throws AbortException { final MatrixBuild build = execution.getBuild(); final FilterScript combinationFilter = FilterScript.parse(execution.getProject().getCombinationFilter(), FilterScript.ACCEPT_ALL); final FilterScript touchStoneFilter = FilterScript.parse(getTouchStoneCombinationFilter(), FilterScript.REJECT_ALL); try { for (MatrixConfiguration c: execution.getActiveConfigurations()) { if (!MatrixBuildListener.buildConfiguration(build, c)) continue; // skip rebuild final Combination combination = c.getCombination(); if (touchStoneFilter != null && touchStoneFilter.apply(execution, combination)) { touchStoneConfigurations.add(c); } else if (combinationFilter.apply(execution, combination)) { delayedConfigurations.add(c); } } } catch (GroovyRuntimeException ex) { PrintStream logger = execution.getListener().getLogger(); logger.println(ex.getMessage()); ex.printStackTrace(logger); throw new AbortException("Failed executing combination filter"); } }
scheduleConfigurationBuild(execution, c); PrintStream logger = execution.getListener().getLogger();
public Result run(MatrixBuildExecution execution) throws InterruptedException, IOException { return run(execution.getBuild(), execution.getAggregators(), execution.getListener()); }