/** * Gets the runs that has the same number as the build. * * @param matrixBuild the build. * @return the list of runs. */ public static List<MatrixRun> getRuns(MatrixBuild matrixBuild) { List<MatrixRun> runs = matrixBuild.getRuns(); List<MatrixRun> runsWithCorrectNumber = new LinkedList<MatrixRun>(); for (MatrixRun run : runs) { if (run.getNumber() == matrixBuild.getNumber()) { runsWithCorrectNumber.add(run); } } return runsWithCorrectNumber; } }
/** * {@inheritDoc} * * When build is a multi-configuration {@link MatrixRun} {@code null} is always returned. */ public ArtifactsPair extract(final AbstractBuild build) { checkNotNull(build); if (build instanceof MatrixRun) { return null; } log.debug("Extracting artifacts from build: {}", build); Set<MavenCoordinatesDTO> produced = Sets.newHashSet(); Set<MavenCoordinatesDTO> consumed = Sets.newHashSet(); if (build instanceof MatrixBuild) { for (MatrixRun run : MatrixBuild.class.cast(build).getRuns()) { log.debug("Including artifacts from multi-config run: {}", run); extractFromBuild(run, produced, consumed); } } else { extractFromBuild(build, produced, consumed); } // Make sure we don't include any produced artifacts in the consumed list consumed.removeAll(produced); return new ArtifactsPair(produced, consumed); }
@Override public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that) { Fingerprint.RangeSet rs = super.getDownstreamRelationship(that); for (MatrixRun run : getRuns()) { rs.add(run.getDownstreamRelationship(that)); } return rs; }
@Override public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that) { Fingerprint.RangeSet rs = super.getDownstreamRelationship(that); for (MatrixRun run : getRuns()) { rs.add(run.getDownstreamRelationship(that)); } return rs; }
@Override public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that) { Fingerprint.RangeSet rs = super.getDownstreamRelationship(that); for(MatrixRun run : getRuns()) rs.add(run.getDownstreamRelationship(that)); return rs; }
@Override public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that) { Fingerprint.RangeSet rs = super.getDownstreamRelationship(that); for (MatrixRun run : getRuns()) { rs.add(run.getDownstreamRelationship(that)); } return rs; }
@Override public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that) { Fingerprint.RangeSet rs = super.getDownstreamRelationship(that); for (MatrixRun run : getRuns()) { rs.add(run.getDownstreamRelationship(that)); } return rs; }
private Collection<? extends AbstractBuild<?, ?>> getTargetBuilds(AbstractBuild<?, ?> build) { if ((build instanceof MatrixBuild) && isUseMatrixChild()) { return Collections2.filter( isOnlyExactRuns()?((MatrixBuild)build).getExactRuns():((MatrixBuild)build).getRuns(), new Predicate<MatrixRun>() { public boolean apply(@Nullable MatrixRun run) { if (run == null) { return false; } if (StringUtils.isBlank(getCombinationFilter())) { // no combination filter stands for all children. return true; } Combination c = run.getParent().getCombination(); AxisList axes = run.getParent().getParent().getAxes(); return c.evalGroovyExpression(axes, getCombinationFilter()); } } ); } else { return Arrays.<AbstractBuild<?,?>>asList(build); } }
/** * Method will add matrix sub job * failure causes to parent job. * @throws IOException IOException */ public void endMatrixBuildScan() throws IOException { List<MatrixRun> runs = ((MatrixBuild)build).getRuns(); List<MatrixRun> runsWithCorrectNumber = new LinkedList<MatrixRun>(); for (MatrixRun run : runs) { if (run.getNumber() == build.getNumber()) { runsWithCorrectNumber.add(run); } } build.addAction(new FailureCauseMatrixBuildAction((MatrixBuild)build, runsWithCorrectNumber)); build.save(); }
/** * Method for remove matrix run actions. * * @param build the MatrixBuild. */ public void removeRunActions(MatrixBuild build) { List<MatrixRun> runs = build.getRuns(); for (MatrixRun run : runs) { if (run.getNumber() == build.getNumber()) { FailureCauseBuildAction fcba = run.getAction(FailureCauseBuildAction.class); if (fcba != null) { run.getActions().remove(fcba); } FailureCauseMatrixBuildAction fcmba = run.getAction(FailureCauseMatrixBuildAction.class); if (fcmba != null) { run.getActions().remove(fcmba); } } } }
@Override public void run() { try { if (build instanceof MatrixBuild) { List<MatrixRun> runs = ((MatrixBuild)build).getRuns(); for (Run run : runs) { if (run.getActions(FailureCauseBuildAction.class).isEmpty() && run.getActions(FailureCauseMatrixBuildAction.class).isEmpty() && PluginImpl.needToAnalyze(run.getResult()) && run.getNumber() == build.getNumber()) { scanBuild(run); } } endMatrixBuildScan(); } else { scanBuild(build); } } catch (Exception e) { logger.log(Level.WARNING, "Failed to add a FailureScanner to " + build.getParent().getFullDisplayName(), e); } }
/** * Asserts that the outcome of the build is a specific outcome. */ public <R extends Run> R assertBuildStatus(Result status, R r) throws Exception { if(status==r.getResult()) return r; // dump the build output in failure message String msg = "unexpected build status; build log was:\n------\n" + getLog(r) + "\n------\n"; if(r instanceof MatrixBuild) { MatrixBuild mb = (MatrixBuild)r; for (MatrixRun mr : mb.getRuns()) { msg+="--- "+mr.getParent().getCombination()+" ---\n"+getLog(mr)+"\n------\n"; } } assertEquals(msg, status,r.getResult()); return r; }
/** * Asserts that the outcome of the build is a specific outcome. */ public <R extends Run> R assertBuildStatus(Result status, R r) throws Exception { if(status==r.getResult()) return r; // dump the build output in failure message String msg = "unexpected build status; build log was:\n------\n" + getLog(r) + "\n------\n"; if(r instanceof MatrixBuild) { MatrixBuild mb = (MatrixBuild)r; for (MatrixRun mr : mb.getRuns()) { msg+="--- "+mr.getParent().getCombination()+" ---\n"+getLog(mr)+"\n------\n"; } } assertEquals(msg, status,r.getResult()); return r; }
/** * Asserts that the outcome of the build is a specific outcome. */ public <R extends Run> R assertBuildStatus(Result status, R r) throws Exception { if (status == r.getResult()) { return r; } // dump the build output in failure message String msg = "unexpected build status; build log was:\n------\n" + getLog(r) + "\n------\n"; if (r instanceof MatrixBuild) { MatrixBuild mb = (MatrixBuild) r; for (MatrixRun mr : mb.getRuns()) { msg += "--- " + mr.getParent().getCombination() + " ---\n" + getLog(mr) + "\n------\n"; } } assertEquals(msg, status, r.getResult()); return r; }
public List<ClaimColumnInformation> getAction(Job<?,?> job) { List<ClaimColumnInformation> result = new ArrayList<ClaimColumnInformation>(); Run<?,?> run = job.getLastCompletedBuild(); if (run != null) { if (run instanceof hudson.matrix.MatrixBuild) { MatrixBuild matrixBuild = (hudson.matrix.MatrixBuild) run; for (MatrixRun combination : matrixBuild.getRuns()) { ClaimBuildAction action = combination.getAction(ClaimBuildAction.class); if (combination.getResult().isWorseThan(Result.SUCCESS) && action != null && action.isClaimed()) { ClaimColumnInformation holder = new ClaimColumnInformation(); holder.setClaim(action); holder.setMatrix(true); holder.setCombinationName(combination.getParent().getCombination().toString()+": "); result.add(holder); } } } else { ClaimBuildAction action = run.getAction(ClaimBuildAction.class); if (action != null && action.isClaimed()) { ClaimColumnInformation holder = new ClaimColumnInformation(); holder.setClaim(action); result.add(holder); } } } return result; }
List<MatrixRun> runs = r.getRuns(); Set<String> builtIds = new HashSet<String>(); for (MatrixRun run : runs) {