Skip to content

Commit

Permalink
Improved to work with jobs deeper down in the tree.
Browse files Browse the repository at this point in the history
  • Loading branch information
kohsuke committed Feb 10, 2012
1 parent 830cf99 commit 693c20e
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 11 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.398</version>
<version>1.424</version>
</parent>

<artifactId>parameterized-trigger</artifactId>
Expand Down
Expand Up @@ -68,7 +68,7 @@ public void buildDependencyGraph(AbstractProject owner, DependencyGraph graph) {
if (!canDeclare(owner)) return;

for (BuildTriggerConfig config : configs)
for (AbstractProject project : config.getProjectList(null))
for (AbstractProject project : config.getProjectList(owner.getParent(),null))
ParameterizedDependency.add(owner, project, config, graph);
}

Expand Down
Expand Up @@ -18,6 +18,7 @@
import hudson.model.Descriptor;
import hudson.model.Hudson;
import hudson.model.Item;
import hudson.model.ItemGroup;
import hudson.model.Items;
import hudson.model.Job;
import hudson.model.ParameterDefinition;
Expand All @@ -29,6 +30,8 @@
import hudson.plugins.parameterizedtrigger.AbstractBuildParameters.DontTriggerException;
import hudson.tasks.Messages;
import hudson.util.FormValidation;

import jenkins.model.Jenkins;
import org.apache.commons.lang.StringUtils;
import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.DataBoundConstructor;
Expand Down Expand Up @@ -104,10 +107,20 @@ public boolean getTriggerWithNoParameters() {
return triggerWithNoParameters;
}

/**
* @deprecated
* Use {@link #getProjectList(ItemGroup, EnvVars)}
*/
public List<AbstractProject> getProjectList(EnvVars env) {
return getProjectList(null,env);
}

/**
* @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.
*/
public List<AbstractProject> getProjectList(EnvVars env) {
public List<AbstractProject> getProjectList(ItemGroup context, EnvVars env) {
if(projectList == null) {
projectList = new ArrayList<AbstractProject>();

Expand All @@ -121,7 +134,7 @@ public List<AbstractProject> getProjectList(EnvVars env) {
projectNames.append(env != null ? env.expand(tokens.nextToken().trim()) : tokens.nextToken().trim());
}

projectList.addAll(Items.fromNameList(projectNames.toString(), AbstractProject.class));
projectList.addAll(Items.fromNameList(context, projectNames.toString(), AbstractProject.class));
}
return projectList;
}
Expand Down Expand Up @@ -206,7 +219,7 @@ public List<Future<AbstractBuild>> perform(AbstractBuild<?, ?> build, Launcher l
List<Action> actions = getBaseActions(
ImmutableList.<AbstractBuildParameters>builder().addAll(configs).addAll(addConfigs).build(),
build, listener);
for (AbstractProject project : getProjectList(env)) {
for (AbstractProject project : getProjectList(build.getProject().getParent(),env)) {
List<Action> list = getBuildActions(actions, project);

futures.add(schedule(build, project, list));
Expand All @@ -231,7 +244,7 @@ public ListMultimap<AbstractProject, Future<AbstractBuild>> perform2(AbstractBui

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(env)) {
for (AbstractProject project : getProjectList(build.getProject().getParent(),env)) {
List<Action> list = getBuildActions(actions, project);

futures.put(project, schedule(build, project, list));
Expand Down Expand Up @@ -349,8 +362,7 @@ public FormValidation doCheckProjects(@AncestorInPath Item project, @QueryParame
while(tokens.hasMoreTokens()) {
String projectName = tokens.nextToken().trim();
if (StringUtils.isNotBlank(projectName)) {
//Item item = Jenkins.getInstance().getItem(projectName,project,Item.class); // only works after version 1.410
Item item = Hudson.getInstance().getItem(projectName);
Item item = Jenkins.getInstance().getItem(projectName,project,Item.class); // only works after version 1.410
if(item==null){
return FormValidation.error(Messages.BuildTrigger_NoSuchProject(projectName,AbstractProject.findNearest(projectName).getName()));
}
Expand Down
Expand Up @@ -94,8 +94,8 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher,
try {
for (BlockableBuildTriggerConfig config : configs) {
ListMultimap<AbstractProject, Future<AbstractBuild>> futures = config.perform2(build, launcher, listener);
List<AbstractProject> projectList = config.getProjectList(env);
List<AbstractProject> projectList = config.getProjectList(build.getProject().getParent(),env);

if(!projectList.isEmpty()){
//handle non-blocking configs
if(futures.isEmpty()){
Expand Down Expand Up @@ -135,7 +135,7 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher,
@Override
public void buildDependencyGraph(AbstractProject owner, DependencyGraph graph) {
for (BuildTriggerConfig config : configs)
for (AbstractProject project : config.getProjectList(null))
for (AbstractProject project : config.getProjectList(owner.getParent(),null))
graph.addDependency(new ParameterizedDependency(owner, project, config) {
@Override
public boolean shouldTriggerBuild(AbstractBuild build,
Expand Down

0 comments on commit 693c20e

Please sign in to comment.