/** * @deprecated * Use {@link #getProjectList(ItemGroup, EnvVars)} */ public List<AbstractProject> getProjectList(EnvVars env) { return getProjectList(null,env); }
/** * Get list of all projects, including workflow job types * @param env Environment variables from which to expand project names; Might be {@code null}. * @param context * The container with which to resolve relative project names. * If the user has no {@link Item#READ} permission, the job won't be added to the list. */ public List<Job> getJobs(ItemGroup context, EnvVars env) { List<Job> projectList = new ArrayList<Job>(); projectList.addAll(readableItemsFromNameList(context, getProjects(env), Job.class)); return projectList; }
List<Action> getBaseActions(AbstractBuild<?,?> build, TaskListener listener) throws IOException, InterruptedException, DontTriggerException { return getBaseActions(configs, build, listener); }
public ListMultimap<AbstractProject, Future<AbstractBuild>> perform2(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { EnvVars env = build.getEnvironment(listener); env.overrideAll(build.getBuildVariables()); try { if (getCondition().isMet(build.getResult())) { ListMultimap<AbstractProject, Future<AbstractBuild>> futures = ArrayListMultimap.create(); for (List<AbstractBuildParameters> addConfigs : getDynamicBuildParameters(build, listener)) { List<Action> actions = getBaseActions(ImmutableList.<AbstractBuildParameters>builder().addAll(configs).addAll(addConfigs).build(), build, listener); for (AbstractProject project : getProjectList(build.getProject().getParent(),env)) { List<Action> list = getBuildActions(actions, project); futures.put(project, schedule(build, project, list)); } } return futures; } } catch (DontTriggerException e) { // don't trigger on this configuration } return ArrayListMultimap.create(); }
public ListMultimap<Job, Future<Run>> perform3(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { EnvVars env = build.getEnvironment(listener); env.overrideAll(build.getBuildVariables()); try { if (getCondition().isMet(build.getResult())) { ListMultimap<Job, Future<Run>> futures = ArrayListMultimap.create(); for (List<AbstractBuildParameters> addConfigs : getDynamicBuildParameters(build, listener)) { List<Action> actions = getBaseActions(ImmutableList.<AbstractBuildParameters>builder().addAll(configs).addAll(addConfigs).build(), build, listener); for (Job project : getJobs(build.getRootBuild().getProject().getParent(), env)) { List<Action> list = getBuildActions(actions, project); final Future scheduled = schedule(build, project, list, listener); if (scheduled != null) { futures.put(project, scheduled); } else { reportSchedulingError(build, project, listener); } } } return futures; } } catch (DontTriggerException e) { // don't trigger on this configuration } return ArrayListMultimap.create(); }
@Override public boolean shouldTriggerBuild(AbstractBuild build, TaskListener listener, List<Action> actions) { if (!config.getCondition().isMet(build.getResult())){ return false; } try { List<Action> actionList = config.getBaseActions(build, listener); if (!actionList.isEmpty()) { actions.addAll(config.getBuildActions(actionList, getDownstreamProject())); return true; } if (config.getTriggerWithNoParameters()) { return true; } listener.getLogger().println("[parameterized-trigger] Downstream builds will not be triggered as no parameter is set."); return false; } catch (AbstractBuildParameters.DontTriggerException ex) { // don't trigger on this configuration return false; } catch (Exception ex) { listener.error("Failed to build parameters to trigger project: " + getDownstreamProject().getName()); ex.printStackTrace(listener.getLogger()); return false; } } }
/** * removes the project references within all {@link TriggerBuilder}s which are wrapped by a conditional buildsteps * @param p the project the check * @param oldName the old project name * @return whether a change has been made */ private boolean deleteInConditionalBuildStep(Project<?,?> p, String oldName) { boolean changed = false; final List<TriggerBuilder> containedBuilders = ConditionalBuildStepHelper.getContainedBuilders(p, TriggerBuilder.class); for (TriggerBuilder triggerBuilder : containedBuilders) { for (ListIterator<BlockableBuildTriggerConfig> bbtc = triggerBuilder.getConfigs().listIterator(); bbtc.hasNext();) { BuildTriggerConfig c = bbtc.next(); if (c.onDeleted(p.getParent(), oldName)) { changed = true; if (c.getProjects().length() == 0){ bbtc.remove(); } } } } return changed; }
hasEnvVariables = hasEnvVariables || hasEnvVariables(config, build.getEnvironment(listener)); List<Job> jobs = config.getJobs(build.getRootBuild().getProject().getParent(), build.getEnvironment(listener)); config.perform(build, launcher, listener); alreadyFired.add(config); if (!alreadyFired.contains(config)) { List<Future<AbstractBuild>> futures = config.perform(build, launcher, listener); for (Future future : futures) { AbstractBuild abstractBuild = null; String[] projects = config.getProjects(build.getEnvironment(listener)).split(","); String[] vars = config.getProjects().split(","); for (int i = 0; i < projects.length; i++) { if (vars[i].trim().contains("$")) {
/** * Used to retrieve the parameters from the upstream project build trigger relative to the given downstream project * @param project the downstream project * @param upstreamBuild the upstream project build * @return the trigger config relative to the given downstream project */ private List<AbstractBuildParameters> retrieveUpstreamProjectTriggerConfig(final AbstractProject<?, ?> project, final AbstractBuild<?, ?> upstreamBuild) { final DescribableList<Publisher, Descriptor<Publisher>> upstreamProjectPublishersList = upstreamBuild.getProject().getPublishersList(); List<AbstractBuildParameters> configs = null; final BuildPipelineTrigger manualTrigger = upstreamProjectPublishersList.get(BuildPipelineTrigger.class); if (manualTrigger != null) { final Set<String> downstreamProjectsNames = Sets.newHashSet(Splitter.on(",").trimResults().split(manualTrigger.getDownstreamProjectNames())); if (downstreamProjectsNames.contains(project.getFullName())) { configs = manualTrigger.getConfigs(); } } final BuildTrigger autoTrigger = upstreamProjectPublishersList.get(BuildTrigger.class); if (autoTrigger != null) { for (BuildTriggerConfig config : autoTrigger.getConfigs()) { final Set<String> downstreamProjectsNames = Sets.newHashSet(Splitter.on(",").trimResults().split(config.getProjects())); if (downstreamProjectsNames.contains(project.getFullName())) { configs = config.getConfigs(); } } } return configs; }
@Override public void buildDependencyGraph(AbstractProject owner, DependencyGraph graph) { if (!canDeclare(owner)) return; for (BuildTriggerConfig config : configs) { List<AbstractProject> projectList = config.getProjectList(owner.getParent(), null); for (AbstractProject project : projectList) { if (config.isTriggerFromChildProjects() && owner instanceof ItemGroup) { ItemGroup<Item> parent = (ItemGroup) owner; for (Item item : parent.getItems()) { if(item instanceof AbstractProject){ AbstractProject child = (AbstractProject) item; ParameterizedDependency.add(child, project, config, graph); } } } else{ ParameterizedDependency.add(owner, project, config, graph); } } } }
private boolean hasEnvVariables(BuildTriggerConfig config, EnvVars env) { return !config.getProjects().equalsIgnoreCase(config.getProjects(env)); }
public Object readResolve() { List<AbstractBuildParameters> configs = new ArrayList<AbstractBuildParameters>(); if (includeCurrentParameters) { configs.add(new CurrentBuildParameters()); } if (properties != null) { configs.add(new PredefinedBuildParameters(properties)); } return new BuildTriggerConfig(projectsValue, condition, triggerWithNoParameters, configs); } }
public boolean onDeleted(String oldName) { return onJobRenamed(oldName, null); }
/** * Note that with Hudson 1.341, trigger should be using * {@link BuildTrigger#buildDependencyGraph(AbstractProject, hudson.model.DependencyGraph)}. */ public List<Future<AbstractBuild>> perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { EnvVars env = build.getEnvironment(listener); env.overrideAll(build.getBuildVariables()); try { if (condition.isMet(build.getResult())) { List<Future<AbstractBuild>> futures = new ArrayList<Future<AbstractBuild>>(); for (List<AbstractBuildParameters> addConfigs : getDynamicBuildParameters(build, listener)) { List<Action> actions = getBaseActions( ImmutableList.<AbstractBuildParameters>builder().addAll(configs).addAll(addConfigs).build(), build, listener); for (AbstractProject project : getProjectList(build.getProject().getParent(),env)) { List<Action> list = getBuildActions(actions, project); futures.add(schedule(build, project, list)); } } return futures; } } catch (DontTriggerException e) { // don't trigger on this configuration } return Collections.emptyList(); }
List<Future<AbstractBuild>> futures = new ArrayList<Future<AbstractBuild>>(); for (List<AbstractBuildParameters> addConfigs : getDynamicBuildParameters(build, listener)) { List<Action> actions = getBaseActions( ImmutableList.<AbstractBuildParameters>builder().addAll(configs).addAll(addConfigs).build(), build, listener); for (Job project : getJobs(build.getRootBuild().getProject().getParent(), env)) { List<Action> list = getBuildActions(actions, project); future = schedule(build, project, list, listener); if (future != null) { futures.add(future); } else { reportSchedulingError(build, project, listener);
@Override public boolean shouldTriggerBuild(AbstractBuild build, TaskListener listener, List<Action> actions) { if (!config.getCondition().isMet(build.getResult())){ return false; if (!BuildTriggerConfig.canTriggerProject(build, getDownstreamProject(), listener)) { return false; List<Action> actionList = config.getBaseActions(build, listener); if (!actionList.isEmpty()) { actions.addAll(config.getBuildActions(actionList, getDownstreamProject())); return true; if (config.getTriggerWithNoParameters()) { return true;
for (ListIterator<BuildTriggerConfig> btc = bt.getConfigs().listIterator(); btc.hasNext();) { BuildTriggerConfig c = btc.next(); if (c.onDeleted(oldName)) { changed = true; if (c.getProjects().length() == 0){ btc.remove(); for (ListIterator<BlockableBuildTriggerConfig> bbtc = tb.getConfigs().listIterator(); bbtc.hasNext();) { BuildTriggerConfig c = bbtc.next(); if (c.onDeleted(oldName)) { changed = true; if (c.getProjects().length() == 0){ bbtc.remove();
public List<String> getProjects() { List<String> projects = new ArrayList<String>(); for (BuildTriggerConfig config : configs) { for (String project : config.getProjects().split(",")) { if (project.trim().contains("$")) { projects.add(project.trim()); } } } return projects; }
public Object readResolve() { List<AbstractBuildParameters> configs = new ArrayList<AbstractBuildParameters>(); if (includeCurrentParameters) { configs.add(new CurrentBuildParameters()); } if (propertiesFile != null) { configs.add(new FileBuildParameters(propertiesFile)); } return new BuildTriggerConfig(projectsValue, condition, triggerWithNoParameters, configs); } }
/** * renames the project references within all {@link TriggerBuilder}s which are wrapped by a conditional buildsteps * @param p the project the check * @param oldName the old project name * @param newName the new project name * @return whether a change has been made */ private boolean renameInConditionalBuildStep(Project<?,?> p, String oldName, String newName) { boolean changed = false; final List<TriggerBuilder> containedBuilders = ConditionalBuildStepHelper.getContainedBuilders(p, TriggerBuilder.class); for (TriggerBuilder triggerBuilder : containedBuilders) { for (BuildTriggerConfig co : triggerBuilder.getConfigs()){ changed |= co.onJobRenamed(p.getParent(), oldName, newName); } } return changed; }