diff --git a/pom.xml b/pom.xml
index ba5a496b3..e185411f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,11 +137,6 @@
-
@@ -179,7 +174,7 @@
org.jenkins-ci.plugins
token-macro
- 1.8.1
+ 1.9
org.jenkins-ci.plugins
@@ -189,7 +184,7 @@
org.jenkins-ci.plugins
parameterized-trigger
- 2.17
+ 2.21
diff --git a/src/main/java/se/diabol/jenkins/pipeline/DeliveryPipelineView.java b/src/main/java/se/diabol/jenkins/pipeline/DeliveryPipelineView.java
index 7626a1c3a..19eb84840 100644
--- a/src/main/java/se/diabol/jenkins/pipeline/DeliveryPipelineView.java
+++ b/src/main/java/se/diabol/jenkins/pipeline/DeliveryPipelineView.java
@@ -192,12 +192,12 @@ public List getPipelines() {
LOG.fine("Getting pipelines!");
List components = new ArrayList();
for (ComponentSpec componentSpec : componentSpecs) {
- AbstractProject firstJob = ProjectUtil.getProject(componentSpec.getFirstJob());
+ AbstractProject firstJob = ProjectUtil.getProject(componentSpec.getFirstJob(), getOwnerItemGroup());
Pipeline prototype = PipelineFactory.extractPipeline(componentSpec.getName(), firstJob);
List pipelines = new ArrayList();
if (showAggregatedPipeline)
- pipelines.add(PipelineFactory.createPipelineAggregated(prototype));
- pipelines.addAll(PipelineFactory.createPipelineLatest(prototype, noOfPipelines));
+ pipelines.add(PipelineFactory.createPipelineAggregated(prototype, getOwnerItemGroup()));
+ pipelines.addAll(PipelineFactory.createPipelineLatest(prototype, noOfPipelines, getOwnerItemGroup()));
components.add(new Component(componentSpec.getName(), pipelines));
}
if (getSorting() != null && !getSorting().equals(NONE_SORTER)) {
@@ -215,7 +215,7 @@ public Collection getItems() {
List result = new ArrayList();
for (ComponentSpec componentSpec : componentSpecs) {
- AbstractProject project = ProjectUtil.getProject(componentSpec.getFirstJob());
+ AbstractProject project = ProjectUtil.getProject(componentSpec.getFirstJob(), getOwnerItemGroup());
Collection> projects = ProjectUtil.getAllDownstreamProjects(project).values();
for (AbstractProject, ?> abstractProject : projects) {
result.add(getItem(abstractProject.getName()));
diff --git a/src/main/java/se/diabol/jenkins/pipeline/PipelineFactory.java b/src/main/java/se/diabol/jenkins/pipeline/PipelineFactory.java
index 750c61181..4a7ede0da 100644
--- a/src/main/java/se/diabol/jenkins/pipeline/PipelineFactory.java
+++ b/src/main/java/se/diabol/jenkins/pipeline/PipelineFactory.java
@@ -79,31 +79,31 @@ private static Task getPrototypeTask(AbstractProject project) {
/**
* Helper method
*
- * @see PipelineFactory#createPipelineLatest(se.diabol.jenkins.pipeline.model.Pipeline, int)
+ * @see PipelineFactory#createPipelineLatest(se.diabol.jenkins.pipeline.model.Pipeline, int, ItemGroup)
*/
- public static Pipeline createPipelineLatest(Pipeline pipeline) {
- List pipelines = createPipelineLatest(pipeline, 1);
+ public static Pipeline createPipelineLatest(Pipeline pipeline, ItemGroup context) {
+ List pipelines = createPipelineLatest(pipeline, 1, context);
return pipelines.size() > 0 ? pipelines.get(0) : null;
}
- public static Pipeline createPipelineAggregated(Pipeline pipeline) {
+ public static Pipeline createPipelineAggregated(Pipeline pipeline, ItemGroup context) {
- AbstractProject firstProject = getProject(pipeline.getStages().get(0).getTasks().get(0));
+ AbstractProject firstProject = getProject(pipeline.getStages().get(0).getTasks().get(0), context);
List stages = new ArrayList();
for (Stage stage : pipeline.getStages()) {
List tasks = new ArrayList();
//The version build for this stage is the highest first task build
- AbstractBuild versionBuild = getHighestBuild(stage.getTasks(), firstProject);
+ AbstractBuild versionBuild = getHighestBuild(stage.getTasks(), firstProject, context);
String version = null;
if (versionBuild != null) {
version = versionBuild.getDisplayName();
}
for (Task task : stage.getTasks()) {
- AbstractProject, ?> taskProject = getProject(task);
+ AbstractProject, ?> taskProject = getProject(task, context);
AbstractBuild currentBuild = match(taskProject.getBuilds(), versionBuild);
if (currentBuild != null) {
@@ -120,10 +120,10 @@ public static Pipeline createPipelineAggregated(Pipeline pipeline) {
return new Pipeline(pipeline.getName(), null, null, null, null, stages, true);
}
- private static AbstractBuild getHighestBuild(List tasks, AbstractProject firstProject) {
+ private static AbstractBuild getHighestBuild(List tasks, AbstractProject firstProject, ItemGroup context) {
int highest = -1;
for (Task task : tasks) {
- AbstractProject project = getProject(task);
+ AbstractProject project = getProject(task, context);
AbstractBuild firstBuild = getFirstUpstreamBuild(project, firstProject);
if (firstBuild != null && firstBuild.getNumber() > highest) {
highest = firstBuild.getNumber();
@@ -144,9 +144,9 @@ private static AbstractBuild getHighestBuild(List tasks, AbstractProject f
* @param pipeline the pipeline prototype
* @param noOfPipelines number of pipeline instances
*/
- public static List createPipelineLatest(Pipeline pipeline, int noOfPipelines) {
+ public static List createPipelineLatest(Pipeline pipeline, int noOfPipelines, ItemGroup context) {
Task firstTask = pipeline.getStages().get(0).getTasks().get(0);
- AbstractProject firstProject = getProject(firstTask);
+ AbstractProject firstProject = getProject(firstTask, context);
List result = new ArrayList();
@@ -159,9 +159,9 @@ public static List createPipelineLatest(Pipeline pipeline, int noOfPip
for (Stage stage : pipeline.getStages()) {
List tasks = new ArrayList();
for (Task task : stage.getTasks()) {
- AbstractProject, ?> taskProject = getProject(task);
+ AbstractProject, ?> taskProject = getProject(task, context);
AbstractBuild currentBuild = match(taskProject.getBuilds(), firstBuild);
- tasks.add(getTask(task, currentBuild));
+ tasks.add(getTask(task, currentBuild, context));
}
stages.add(new Stage(stage.getName(), tasks));
}
@@ -194,8 +194,8 @@ protected static List getChanges(AbstractBuild, ?> build) {
}
- private static Task getTask(Task task, AbstractBuild build) {
- AbstractProject project = getProject(task);
+ private static Task getTask(Task task, AbstractBuild build, ItemGroup context) {
+ AbstractProject project = getProject(task, context);
Status status = resolveStatus(project, build);
String link = build == null || status.isIdle() || status.isQueued() ? task.getLink() : build.getUrl();
String buildId = build == null || status.isIdle() || status.isQueued() ? null : String.valueOf(build.getNumber());
@@ -259,8 +259,8 @@ private static AbstractBuild match(RunList extends AbstractBuild> runList, Abs
return null;
}
- private static AbstractProject getProject(Task task) {
- return Jenkins.getInstance().getItem(task.getId(), Jenkins.getInstance().getItemGroup(), AbstractProject.class);
+ private static AbstractProject getProject(Task task, ItemGroup context) {
+ return ProjectUtil.getProject(task.getId(), context);
}
protected static Status resolveStatus(AbstractProject project, AbstractBuild build) {
diff --git a/src/main/java/se/diabol/jenkins/pipeline/util/ProjectUtil.java b/src/main/java/se/diabol/jenkins/pipeline/util/ProjectUtil.java
index 9fd1eec88..d0182da83 100644
--- a/src/main/java/se/diabol/jenkins/pipeline/util/ProjectUtil.java
+++ b/src/main/java/se/diabol/jenkins/pipeline/util/ProjectUtil.java
@@ -81,8 +81,8 @@ protected static List getSubProjects(AbstractProject project) {
return result;
}
- public static AbstractProject, ?> getProject(String name) {
- return Jenkins.getInstance().getItem(name, Jenkins.getInstance(), AbstractProject.class);
+ public static AbstractProject, ?> getProject(String name, ItemGroup context) {
+ return Jenkins.getInstance().getItem(name, context, AbstractProject.class);
}
diff --git a/src/test/java/se/diabol/jenkins/pipeline/DeliveryPipelineViewTest.java b/src/test/java/se/diabol/jenkins/pipeline/DeliveryPipelineViewTest.java
index 1280c4f0b..2a47af183 100644
--- a/src/test/java/se/diabol/jenkins/pipeline/DeliveryPipelineViewTest.java
+++ b/src/test/java/se/diabol/jenkins/pipeline/DeliveryPipelineViewTest.java
@@ -25,6 +25,7 @@
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
+import org.jvnet.hudson.test.MockFolder;
import org.jvnet.hudson.test.WithoutJenkins;
import se.diabol.jenkins.pipeline.model.Component;
import se.diabol.jenkins.pipeline.model.Pipeline;
@@ -123,6 +124,37 @@ public void testGetItemsAndContains() throws Exception {
}
+ @Test
+ public void testGetItemsAndContainsWithFolders() throws Exception {
+ MockFolder folder = jenkins.createFolder("folder");
+ FreeStyleProject build = folder.createProject(FreeStyleProject.class, "build");
+ FreeStyleProject sonar = folder.createProject(FreeStyleProject.class, "sonar");
+ FreeStyleProject packaging = folder.createProject(FreeStyleProject.class,"packaging");
+
+
+ //FreeStyleProject build = jenkins.createFreeStyleProject("build");
+ //FreeStyleProject sonar = jenkins.createFreeStyleProject("sonar");
+ build.getPublishersList().add(new BuildTrigger("sonar", false));
+ build.getPublishersList().add(new BuildTrigger("packaging", false));
+
+ jenkins.getInstance().rebuildDependencyGraph();
+
+
+ List specs = new ArrayList();
+ specs.add(new DeliveryPipelineView.ComponentSpec("Comp", "build"));
+ DeliveryPipelineView view = new DeliveryPipelineView("name", specs);
+ folder.addView(view);
+
+ assertTrue(view.contains(build));
+ assertTrue(view.contains(sonar));
+ assertTrue(view.contains(packaging));
+
+ Collection items = view.getItems();
+ assertEquals(3, items.size());
+
+ }
+
+
@Test
public void testGetPipelines() throws Exception {
FreeStyleProject build = jenkins.createFreeStyleProject("build");
diff --git a/src/test/java/se/diabol/jenkins/pipeline/PipelineFactoryTest.java b/src/test/java/se/diabol/jenkins/pipeline/PipelineFactoryTest.java
index fe33110f5..3cb8f04ee 100644
--- a/src/test/java/se/diabol/jenkins/pipeline/PipelineFactoryTest.java
+++ b/src/test/java/se/diabol/jenkins/pipeline/PipelineFactoryTest.java
@@ -150,8 +150,8 @@ public void testCreatePipelineAggregatedSharedTask() throws Exception {
final Pipeline pipe1 = PipelineFactory.extractPipeline("pipe1", build1);
final Pipeline pipe2 = PipelineFactory.extractPipeline("pipe2", build2);
- Pipeline aggregated1 = PipelineFactory.createPipelineAggregated(pipe1);
- Pipeline aggregated2 = PipelineFactory.createPipelineAggregated(pipe2);
+ Pipeline aggregated1 = PipelineFactory.createPipelineAggregated(pipe1, jenkins.getInstance());
+ Pipeline aggregated2 = PipelineFactory.createPipelineAggregated(pipe2, jenkins.getInstance());
assertNull(aggregated1.getStages().get(0).getVersion());
assertNull(aggregated2.getStages().get(0).getVersion());
@@ -171,8 +171,8 @@ public void testCreatePipelineAggregatedSharedTask() throws Exception {
assertEquals(2, pipe2.getStages().size());
assertNotNull(sonar.getBuild("1"));
- aggregated1 = PipelineFactory.createPipelineAggregated(pipe1);
- aggregated2 = PipelineFactory.createPipelineAggregated(pipe2);
+ aggregated1 = PipelineFactory.createPipelineAggregated(pipe1, jenkins.getInstance());
+ aggregated2 = PipelineFactory.createPipelineAggregated(pipe2, jenkins.getInstance());
assertEquals("#1", aggregated1.getStages().get(1).getVersion());
assertEquals("job/sonar1/1/", aggregated1.getStages().get(1).getTasks().get(0).getLink());
@@ -190,8 +190,8 @@ public void testCreatePipelineAggregatedSharedTask() throws Exception {
jenkins.buildAndAssertSuccess(build2);
jenkins.waitUntilNoActivity();
- aggregated1 = PipelineFactory.createPipelineAggregated(pipe1);
- aggregated2 = PipelineFactory.createPipelineAggregated(pipe2);
+ aggregated1 = PipelineFactory.createPipelineAggregated(pipe1, jenkins.getInstance());
+ aggregated2 = PipelineFactory.createPipelineAggregated(pipe2, jenkins.getInstance());
assertEquals("#1", aggregated1.getStages().get(1).getVersion());
assertEquals("#1", aggregated2.getStages().get(1).getVersion());
@@ -203,8 +203,8 @@ public void testCreatePipelineAggregatedSharedTask() throws Exception {
jenkins.buildAndAssertSuccess(build1);
jenkins.waitUntilNoActivity();
- aggregated1 = PipelineFactory.createPipelineAggregated(pipe1);
- aggregated2 = PipelineFactory.createPipelineAggregated(pipe2);
+ aggregated1 = PipelineFactory.createPipelineAggregated(pipe1, jenkins.getInstance());
+ aggregated2 = PipelineFactory.createPipelineAggregated(pipe2, jenkins.getInstance());
assertEquals("#2", aggregated1.getStages().get(1).getVersion());
@@ -229,7 +229,7 @@ public void testCreatePipelineAggregatedSharedTask() throws Exception {
BuildPipelineView view = new BuildPipelineView("", "", new DownstreamProjectGridBuilder("build1"), "1", false, null);
view.triggerManualBuild(1, "prod", "test");
jenkins.waitUntilNoActivity();
- aggregated1 = PipelineFactory.createPipelineAggregated(pipe1);
+ aggregated1 = PipelineFactory.createPipelineAggregated(pipe1, jenkins.getInstance());
assertTrue(aggregated1.getStages().get(3).getTasks().get(0).getStatus().isSuccess());
assertEquals("#1", aggregated1.getStages().get(3).getVersion());
@@ -261,7 +261,7 @@ public void testAggregatedStageWithTwoManualTasks() throws Exception {
assertNull(ci2.getLastBuild());
Pipeline pipeline = PipelineFactory.extractPipeline("test", build);
- Pipeline aggregated = PipelineFactory.createPipelineAggregated(pipeline);
+ Pipeline aggregated = PipelineFactory.createPipelineAggregated(pipeline, jenkins.getInstance());
assertNotNull(aggregated);
assertEquals("ci1", aggregated.getStages().get(1).getTasks().get(0).getName());
assertEquals("ci2", aggregated.getStages().get(1).getTasks().get(1).getName());
@@ -272,7 +272,7 @@ public void testAggregatedStageWithTwoManualTasks() throws Exception {
jenkins.buildAndAssertSuccess(build);
jenkins.waitUntilNoActivity();
- aggregated = PipelineFactory.createPipelineAggregated(pipeline);
+ aggregated = PipelineFactory.createPipelineAggregated(pipeline, jenkins.getInstance());
assertNotNull(aggregated);
assertEquals("#2", build.getLastBuild().getDisplayName());
assertEquals("SUCCESS", aggregated.getStages().get(1).getTasks().get(0).getStatus().toString());
@@ -281,7 +281,7 @@ public void testAggregatedStageWithTwoManualTasks() throws Exception {
view.triggerManualBuild(2, "ci2", "build");
jenkins.waitUntilNoActivity();
- aggregated = PipelineFactory.createPipelineAggregated(pipeline);
+ aggregated = PipelineFactory.createPipelineAggregated(pipeline, jenkins.getInstance());
assertNotNull(aggregated);
assertEquals("IDLE", aggregated.getStages().get(1).getTasks().get(0).getStatus().toString());
assertEquals("SUCCESS", aggregated.getStages().get(1).getTasks().get(1).getStatus().toString());
@@ -318,7 +318,7 @@ public void testCreatePipelineLatest() throws Exception {
jenkins.buildAndAssertSuccess(build);
jenkins.waitUntilNoActivity();
- Pipeline latest = PipelineFactory.createPipelineLatest(pipeline);
+ Pipeline latest = PipelineFactory.createPipelineLatest(pipeline, jenkins.getInstance());
assertNotNull(latest);
@@ -339,7 +339,7 @@ public void testPipelineLatestDownstreamIsDisabled() throws Exception {
jenkins.buildAndAssertSuccess(build);
jenkins.waitUntilNoActivity();
Pipeline pipeline = PipelineFactory.extractPipeline("Pipeline", build);
- Pipeline latest = PipelineFactory.createPipelineLatest(pipeline);
+ Pipeline latest = PipelineFactory.createPipelineLatest(pipeline, jenkins.getInstance());
assertNotNull(latest);
assertEquals(2, latest.getStages().size());
assertEquals("SUCCESS", latest.getStages().get(0).getTasks().get(0).getStatus().toString());
diff --git a/src/test/java/se/diabol/jenkins/pipeline/util/ProjectUtilTest.java b/src/test/java/se/diabol/jenkins/pipeline/util/ProjectUtilTest.java
index 180ba9780..8696e033f 100644
--- a/src/test/java/se/diabol/jenkins/pipeline/util/ProjectUtilTest.java
+++ b/src/test/java/se/diabol/jenkins/pipeline/util/ProjectUtilTest.java
@@ -22,6 +22,8 @@
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
+import org.jvnet.hudson.test.MockFolder;
+import org.mortbay.jetty.security.UserRealm;
import se.diabol.jenkins.pipeline.PipelineProperty;
import java.util.Set;
@@ -36,8 +38,9 @@ public class ProjectUtilTest {
@Test
public void testGetStageNames() throws Exception {
- FreeStyleProject build1 = jenkins.createFreeStyleProject("build1");
- FreeStyleProject build2 = jenkins.createFreeStyleProject("build2");
+ MockFolder folder = jenkins.createFolder("folder");
+ FreeStyleProject build1 = folder.createProject(FreeStyleProject.class, "build1");
+ FreeStyleProject build2 = folder.createProject(FreeStyleProject.class, "build2");
Set stageNames = ProjectUtil.getStageNames();
assertNotNull(stageNames);