Refine search
/** * 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 onLoad(Run<?, ?> r) { if (r instanceof MatrixRun) { MatrixRun run = (MatrixRun) r; ParametersAction action = run.getParentBuild().getAction(ParametersAction.class); if (action != null) { // Parameters of build and its runs are guaranteed to be the same. Even the actual instances are the same // until it gets (re)loaded from disk when the parameters reside in memory 1+N times squandering memory. // This populates now volatile collection with parameters shared between the build and all its runs bringing // the space complexity back to 1. parameters = action.getParameters(); } else { parameters = Collections.emptyList(); } } }
@Override public boolean endBuild() throws InterruptedException, IOException { build.addAction(createAction(healthDescriptor, defaultEncoding, totals)); return true; }
/** * Sets the base build from which this build is derived. * @since 1.416 */ public void setBaseBuild(MatrixBuild baseBuild) { this.baseBuild = (baseBuild==null || baseBuild==getPreviousBuild()) ? null : baseBuild.getNumber(); }
/** * Gets the {@link MatrixRun} in this build that corresponds * to the given combination. */ public MatrixRun getRun(Combination c) { MatrixConfiguration config = getParent().getItem(c); if(config==null) return null; return getRunForConfiguration(config); }
/** * Returns the base {@link MatrixBuild} that this build originates from. * <p> * If this build is a partial build, unexecuted {@link MatrixRun}s are delegated to this build number. */ public MatrixBuild getBaseBuild() { return baseBuild==null ? getPreviousBuild() : getParent().getBuildByNumber(baseBuild); }
protected Result doRun(BuildListener listener) throws Exception { MatrixProject p = getProject(); PrintStream logger = listener.getLogger(); for (Publisher pub : p.getPublishers().values()) { if (pub instanceof MatrixAggregatable) { MatrixAggregatable ma = (MatrixAggregatable) pub; for (JobProperty prop : p.getProperties().values()) { if (prop instanceof MatrixAggregatable) { MatrixAggregatable ma = (MatrixAggregatable) prop; axes = p.getAxes(); Collection<MatrixConfiguration> activeConfigurations = p.getActiveConfigurations(); final int n = getNumber(); String touchStoneFilter = p.getTouchStoneCombinationFilter(); Executor exe = b.getExecutor(); if (exe != null) { logger.println(Messages.MatrixBuild_Interrupting(b.getDisplayName())); exe.interrupt();
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; }
/** * True if this build didn't do a full build and it is depending on the result of the previous build. */ public boolean isPartial() { for(MatrixConfiguration c : getParent().getActiveConfigurations()) { MatrixRun b = c.getNearestOldBuild(getNumber()); if (b != null && b.getNumber()!=getNumber()) return true; } return false; }
matrixProject.getBuildersList().add(new TestBuilder() { @Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { Future<MatrixBuild> matrixBuildFuture = matrixProject.scheduleBuild2(0); firstBuild.await(5, TimeUnit.SECONDS); List<MatrixRun> runs = r.getRuns(); Set<String> builtIds = new HashSet<String>(); for (MatrixRun run : runs) { MercurialTagAction builtRevision = run.getAction(MercurialTagAction.class); String buildId = builtRevision.getId(); builtIds.add(buildId);
/** * 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 boolean doBuildConfiguration(MatrixBuild b, MatrixConfiguration c) { MatrixSubsetAction a = b.getAction(MatrixSubsetAction.class); if (a==null) return true; // run the filter and restrict the subset to run return c.getCombination().evalScriptExpression(b.getParent().getAxes(), a.getFilter()); }
public String getTooltip() { MatrixRun r = getRun(); if (r != null) { return r.getIconColor().getDescription(); } Queue.Item item = Hudson.getInstance().getQueue().getItem(getParent().getItem(combination)); if (item != null) { return item.getWhy(); } return null; // fall back }
@Override protected MatrixRun newBuild() throws IOException { // for every MatrixRun there should be a parent MatrixBuild MatrixBuild lb = getParent().getLastBuild(); MatrixRun lastBuild = new MatrixRun(this, lb.getTimestamp()); lastBuild.number = lb.getNumber(); builds.put(lastBuild); return lastBuild; }
@Override public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that) { Fingerprint.RangeSet rs = super.getDownstreamRelationship(that); for (MatrixRun run : getRuns()) { rs.add(run.getDownstreamRelationship(that)); } return rs; }
@CheckForNull private EnvInjectPasswordWrapper getEnvInjectPasswordWrapper(@Nonnull Run<?, ?> build) throws EnvInjectException { DescribableList<BuildWrapper, Descriptor<BuildWrapper>> wrappersProject; if (build instanceof MatrixRun) { MatrixProject project = ((MatrixRun) build).getParentBuild().getProject(); wrappersProject = project.getBuildWrappersList(); } else { final Job<?, ?> job = build.getParent(); if (job instanceof BuildableItemWithBuildWrappers) { BuildableItemWithBuildWrappers project = (BuildableItemWithBuildWrappers) job; wrappersProject = project.getBuildWrappersList(); } else { throw new EnvInjectException(String.format("Job type %s is not supported", job)); } } for (BuildWrapper buildWrapper : wrappersProject) { if (EnvInjectPasswordWrapper.class.equals(buildWrapper.getClass())) { return (EnvInjectPasswordWrapper) buildWrapper; } } return null; }
/** * 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; } }
private boolean isEligibleJobType(@Nonnull Run<?, ?> build) { final Job job; if (build instanceof MatrixRun) { job = ((MatrixRun) build).getParentBuild().getParent(); } else { job = build.getParent(); } return job instanceof BuildableItemWithBuildWrappers; }