Skip to content

Commit

Permalink
Merge pull request #168 from patbos/JENKINS-30043_subprojects_first
Browse files Browse the repository at this point in the history
JENKINS-30043 Subprojects should be resolved first
  • Loading branch information
patbos committed Mar 28, 2016
2 parents 56937df + a062e58 commit b2a4408
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 3 deletions.
Expand Up @@ -23,7 +23,7 @@

import java.util.List;

@Extension
@Extension(ordinal = 100)
@SuppressWarnings("UnusedDeclaration")
public class ProjectRelationshipResolver extends RelationshipResolver {

Expand Down
Expand Up @@ -33,7 +33,7 @@
import java.util.ArrayList;
import java.util.List;

@Extension(optional = true)
@Extension(optional = true, ordinal = 150)
public class PromotedBuildRelationshipResolver extends RelationshipResolver {

// Force a classloading error plugin isn't available
Expand Down
Expand Up @@ -31,7 +31,7 @@
* It looks for Parameterized Trigger Plugin builders for the current project.
* They are for some reason not registered as a dependency in Jenkins.
*/
@Extension
@Extension(ordinal = 200)
public class SubProjectRelationshipResolver extends RelationshipResolver {

@Override
Expand Down
28 changes: 28 additions & 0 deletions src/test/java/se/diabol/jenkins/pipeline/domain/PipelineTest.java
Expand Up @@ -818,4 +818,32 @@ public void testCalculateTotalBuildTimeNoStages() throws Exception {
assertEquals(0L, pipeline.getTotalBuildTime());
}

@Test
@Bug(30043)
public void testSubProjectsFirst() throws Exception {
FreeStyleProject jobA = jenkins.createFreeStyleProject("Job A");
jobA.addProperty(new PipelineProperty(null, "Stage", null));
FreeStyleProject util1 = jenkins.createFreeStyleProject("Job Util 1");
util1.addProperty(new PipelineProperty(null, "Stage", null));
FreeStyleProject util2 = jenkins.createFreeStyleProject("Job Util 2");
util2.addProperty(new PipelineProperty(null, "Stage", null));
FreeStyleProject jobC = jenkins.createFreeStyleProject("Job C");
jobC.addProperty(new PipelineProperty(null, "Stage", null));

jobA.getBuildersList().add(new TriggerBuilder(new BlockableBuildTriggerConfig("Job Util 1", new BlockingBehaviour("never", "never", "never"), null)));
jobA.getBuildersList().add(new TriggerBuilder(new BlockableBuildTriggerConfig("Job Util 2", new BlockingBehaviour("never", "never", "never"), null)));
jobA.getPublishersList().add(new hudson.plugins.parameterizedtrigger.BuildTrigger(new BuildTriggerConfig("Job C", ResultCondition.SUCCESS, new ArrayList<AbstractBuildParameterFactory>())));

jenkins.getInstance().rebuildDependencyGraph();

Pipeline pipeline = Pipeline.extractPipeline("Pipeline", jobA);

assertEquals("Job A", pipeline.getStages().get(0).getTasks().get(0).getId());
assertEquals("Job Util 1", pipeline.getStages().get(0).getTasks().get(1).getId());
assertEquals("Job Util 2", pipeline.getStages().get(0).getTasks().get(2).getId());
assertEquals("Job C", pipeline.getStages().get(0).getTasks().get(3).getId());


}

}

0 comments on commit b2a4408

Please sign in to comment.