PROBLEM
Given that all the jobs have string LEVEL_X
in it's job name, where X is a number > 1. I want every job with X = n to surveil every job with X = n-1
, and start building if each of them is finished with success. And I want the job with X = n
to surveil the other jobs with an interval of 1 minute.
First of all, I am interested in knowing what the best way is to do that, second I want the solution if one can be implemented by a small script, maybe a groovy script which can be run in system groovy script
using the GROOVY PLUGIN.
The easiest way to get a list of all Jenkins jobs is by executing an appropriate Groovy script using a Jenkins script console feature.
Visit "Manage Jenkins" > "Manage Nodes". Select any node to view the status page. In the menu on the left, a menu item is available to open a "Script Console" on that specific agent.
A Jenkins build job contains the configuration for automating a specific task or step in the application building process. These tasks include gathering dependencies, compiling, archiving, or transforming code, and testing and deploying code in different environments.
Here are some hints and code snippets:
http://<jenkins-server>/script
that will help you with debugging your scripts.Code snippet that outputs all job names:
def hi = hudson.model.Hudson.instance
hi.getItems(hudson.model.Project).each {project ->
println(project.displayName)
}
Code snippet that extracts n
from LEVEL_n
(implemented as closure):
def level = { name ->
def ret = 0
name.eachMatch(~'LEVEL_([1-9]+[0-9*])', {ret = it[1].toInteger()})
return ret
}
Code snippet that gets statuses for all the latest builds:
def hi = hudson.model.Hudson.instance
hi.getItems(hudson.model.Project).each {project ->
println(project.lastBuild.result)
}
Link to the method that starts a build.
Note: things get a bit hairier if you are using Matrix builds. But as long as you don't this should be enough.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With