Last active
August 29, 2015 14:13
-
-
Save dirk-thomas/630084eefb44baa79f15 to your computer and use it in GitHub Desktop.
Groovy script to demonstrate https://issues.jenkins-ci.org/browse/JENKINS-21605
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
job_prefix = 'jenkins21605_' | |
println 'Deleting jobs from previous tests...' | |
for (p in Jenkins.instance.allItems) { | |
if (!p.name.startsWith(job_prefix)) continue | |
println '- ' + p.name | |
p.delete() | |
} | |
println '' | |
def createProject(job_name, upstream_names) { | |
job_config_template = ''' | |
<project> | |
<actions/> | |
<description></description> | |
<keepDependencies>false</keepDependencies> | |
<properties/> | |
<scm class="hudson.scm.NullSCM"/> | |
<assignedNode>master</assignedNode> | |
<canRoam>false</canRoam> | |
<disabled>false</disabled> | |
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> | |
<blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding> | |
<triggers> | |
<jenkins.triggers.ReverseBuildTrigger> | |
<spec></spec> | |
<upstreamProjects>%1$s</upstreamProjects> | |
<threshold> | |
<name>UNSTABLE</name> | |
<ordinal>1</ordinal> | |
<color>YELLOW</color> | |
<completeBuild>true</completeBuild> | |
</threshold> | |
</jenkins.triggers.ReverseBuildTrigger> | |
</triggers> | |
<concurrentBuild>false</concurrentBuild> | |
<builders> | |
<hudson.plugins.groovy.SystemGroovy plugin="[email protected]"> | |
<scriptSource class="hudson.plugins.groovy.StringScriptSource"> | |
<command>println 'dummy build step'</command> | |
</scriptSource> | |
<bindings></bindings> | |
<classpath></classpath> | |
</hudson.plugins.groovy.SystemGroovy> | |
</builders> | |
<publishers/> | |
<buildWrappers/> | |
</project> | |
''' | |
upstream_projects = '' | |
for (upstream_name in upstream_names) { | |
upstream_projects += job_prefix + upstream_name + ',' | |
} | |
job_config = sprintf(job_config_template, upstream_projects) | |
stream = new StringBufferInputStream(job_config) | |
println '- ' + job_prefix + job_name | |
Jenkins.instance.createProjectFromXML(job_prefix + job_name, stream) | |
} | |
def createProjects(parent_name, count) { | |
range = 1..count | |
for (i in range) { | |
createProject(parent_name + String.format("%0" + 2 + "d", i), [parent_name]) | |
} | |
} | |
// this example demonstrates that all upstream causes are listed | |
// and that they are not limited in any way | |
println 'Creating new job hierarchy...' | |
createProject('', []) | |
all_parents = [] | |
range = 1..40 | |
parent = '' | |
for (i in range) { | |
name = String.format("%0" + 2 + "d", i) | |
createProject(name, [parent]) | |
parent = name | |
all_parents += [parent] | |
println all_parents | |
} | |
createProject('leaf', all_parents) | |
println '' | |
println 'You can create a view to show all test jobs using the regular expression: ' + job_prefix | |
println '' | |
println 'Please trigger the root job: ' + job_prefix | |
println 'And then look at the leaf job: ' + job_prefix + '1' | |
println 'It lists all upstream causes - BUG' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment