@Override public List<AbstractProject> getDownstreamProjects(AbstractProject<?, ?> project) { List<AbstractProject> result = new ArrayList<>(); for (SubProjectsAction action : Util.filter(project.getActions(), SubProjectsAction.class)) { for (BlockableBuildTriggerConfig config : action.getConfigs()) { result.addAll(config.getProjectList(project.getParent(), null)); } } return result; }
BlockableBuildTriggerConfig config = new BlockableBuildTriggerConfig( testJob, blocking,
@Override protected Future schedule(AbstractBuild<?, ?> build, Job project, List<Action> list, TaskListener listener) throws InterruptedException, IOException { if (block!=null) { while (true) { // add DifferentiatingAction to make sure this doesn't get merged with something else, // which is most likely unintended. Might make sense to do it at BuildTriggerConfig for all. list = ImmutableList.<Action>builder().addAll(list).add(new DifferentiatingAction()).build(); // if we fail to add the item to the queue, wait and retry. // it also means we have to force quiet period = 0, or else it'll never leave the queue Future f = schedule(build, project, 0, list, listener); // When a project is disabled or the configuration is not yet saved f will always be null and we're caught in a loop, therefore we need to check for it if (f!=null || (f==null && !canBeScheduled(project))){ return f; } Thread.sleep(1000); } } else { return super.schedule(build,project,list,listener); } }
ListMultimap<Job, Future<Run>> futures = config.perform3(build, launcher, listener); List<Job> projectList = config.getJobs(build.getRootBuild().getProject().getParent(), env); StringTokenizer tokenizer = new StringTokenizer(config.getProjects(env), ","); if(!config.canBeScheduled(p)){ listener.getLogger().println("Skipping " + HyperlinkNote.encodeTo('/'+ p.getUrl(), p.getFullDisplayName()) + ". The project is either disabled," BuildInfoExporterAction.addBuildInfoExporterAction(build, b.getParent().getFullName(), b.getNumber(), b.getResult()); if (buildStepResult && config.getBlock().mapBuildStepResult(b.getResult())) { build.setResult(config.getBlock().mapBuildResult(b.getResult())); } else { buildStepResult = false;
ListMultimap<AbstractProject, Future<AbstractBuild>> futures = config.perform2(build, launcher, listener); List<AbstractProject> projectList = config.getProjectList(build.getProject().getParent(),env); build.getActions().add(new BuildInfoExporterAction(b.getProject().getFullName(), b.getNumber())); if(buildStepResult && config.getBlock().mapBuildStepResult(b.getResult())) { build.setResult(config.getBlock().mapBuildResult(b.getResult())); } else { buildStepResult = false;
List<BlockableBuildTriggerConfig> configs = triggerBuilder.getConfigs(); for (BlockableBuildTriggerConfig config : configs) { result.addAll(config.getProjectList(project.getParent(), null));
for (SubProjectsAction action : Util.filter(currentProject.getActions(), SubProjectsAction.class)) { for (BlockableBuildTriggerConfig config : action.getConfigs()) { for (final AbstractProject<?, ?> dependency : config.getProjectList(currentProject.getParent(), null)) { AbstractBuild<?, ?> returnedBuild = null; if (this.currentBuild != null) {
for (SubProjectsAction action : Util.filter(project.getActions(), SubProjectsAction.class)) { for (hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig config : action.getConfigs()) { for (final AbstractProject<?, ?> dependency : config.getProjectList(project.getParent(), null)) { final Collection<AbstractProject<?, ?>> forkedPath = new LinkedHashSet<AbstractProject<?, ?>>(parentPath); if (forkedPath.add(dependency)) {