@Override @Nonnull public Set<User> calculateCulprits() { Set<User> c = RunWithSCM.super.calculateCulprits(); AbstractBuild<P,R> p = getPreviousCompletedBuild(); if (upstreamCulprits) { // If we have dependencies since the last successful build, add their authors to our list if (p != null && p.getPreviousNotFailedBuild() != null) { Map<AbstractProject, AbstractBuild.DependencyChange> depmap = p.getDependencyChanges(p.getPreviousSuccessfulBuild()); for (AbstractBuild.DependencyChange dep : depmap.values()) { for (AbstractBuild<?, ?> b : dep.getBuilds()) { for (ChangeLogSet.Entry entry : b.getChangeSet()) { c.add(entry.getAuthor()); } } } } } return c; }
@SuppressWarnings("rawtypes") private Map<AbstractProject, List<AbstractBuild>> getUpstreamBuildsSinceLastStable(AbstractBuild<?,?> currentBuild) { // may be null: AbstractBuild<?, ?> previousSuccessfulBuild = currentBuild.getPreviousSuccessfulBuild(); if (previousSuccessfulBuild == null) { return Collections.emptyMap(); } Map<AbstractProject, List<AbstractBuild>> result = new HashMap<AbstractProject, List<AbstractBuild>>(); Set<AbstractProject> upstreamProjects = currentBuild.getUpstreamBuilds().keySet(); for (AbstractProject upstreamProject : upstreamProjects) { result.put(upstreamProject, getUpstreamBuilds(upstreamProject, previousSuccessfulBuild, currentBuild)); } return result; }
@SuppressWarnings("rawtypes") private Map<AbstractProject, List<AbstractBuild>> getUpstreamBuildsSinceLastStable(AbstractBuild<?,?> currentBuild) { // may be null: AbstractBuild<?, ?> previousSuccessfulBuild = currentBuild.getPreviousSuccessfulBuild(); if (previousSuccessfulBuild == null) { return Collections.emptyMap(); } Map<AbstractProject, List<AbstractBuild>> result = new HashMap<AbstractProject, List<AbstractBuild>>(); Set<AbstractProject> upstreamProjects = currentBuild.getUpstreamBuilds().keySet(); for (AbstractProject upstreamProject : upstreamProjects) { result.put(upstreamProject, getUpstreamBuilds(upstreamProject, previousSuccessfulBuild, currentBuild)); } return result; }
@Override public String buildStartMessage(IMPublisher publisher, AbstractBuild<?, ?> build, BuildListener listener) throws IOException, InterruptedException { StringBuilder sb = new StringBuilder(super.buildStartMessage(publisher, build, listener)); AbstractBuild<?, ?> previousBuild = build.getPreviousBuild(); if (previousBuild != null && !previousBuild.isBuilding()) { sb.append(" (previous build: ") .append(ResultTrend.getResultTrend(previousBuild).getID()); if (previousBuild.getResult().isWorseThan(Result.SUCCESS)) { AbstractBuild<?, ?> lastSuccessfulBuild = build.getPreviousSuccessfulBuild(); if (lastSuccessfulBuild != null) { sb.append(" -- last ").append(Result.SUCCESS).append(" ") .append(lastSuccessfulBuild.getDisplayName()) .append(" ").append(lastSuccessfulBuild.getTimestampString()).append(" ago"); } } sb.append(")"); } return sb.toString(); }
@Override @Nonnull public Set<User> calculateCulprits() { Set<User> c = RunWithSCM.super.calculateCulprits(); AbstractBuild<P,R> p = getPreviousCompletedBuild(); if (upstreamCulprits) { // If we have dependencies since the last successful build, add their authors to our list if (p != null && p.getPreviousNotFailedBuild() != null) { Map<AbstractProject, AbstractBuild.DependencyChange> depmap = p.getDependencyChanges(p.getPreviousSuccessfulBuild()); for (AbstractBuild.DependencyChange dep : depmap.values()) { for (AbstractBuild<?, ?> b : dep.getBuilds()) { for (ChangeLogSet.Entry entry : b.getChangeSet()) { c.add(entry.getAuthor()); } } } } } return c; }
R previousBuild = getPreviousSuccessfulBuild(); if (previousBuild != null) { Map <AbstractProject,AbstractBuild.DependencyChange> depmap = getDependencyChanges(previousBuild);
R previousBuild = getPreviousSuccessfulBuild(); if (previousBuild != null) { Map<AbstractProject, AbstractBuild.DependencyChange> depmap = getDependencyChanges(previousBuild);
R previousBuild = getPreviousSuccessfulBuild(); if (previousBuild != null) { Map <AbstractProject,AbstractBuild.DependencyChange> depmap = getDependencyChanges(previousBuild);
R previousBuild = getPreviousSuccessfulBuild(); if (previousBuild != null) { Map <AbstractProject,AbstractBuild.DependencyChange> depmap = getDependencyChanges(previousBuild);