I have created a Groovy script which is used in a System Groovy Script
step in a Jenkins job which needs to access the current build of the current job.
The current build is required when using an Hudson.model Cause.UpstreamCause
to link the current build of my current job to a dependent job that I am scheduling.
Since code is more concise:
my-job-step.groovy
:
def scheduleDependentJob(jobName) {
def fooParam = new StringParameterValue('foo', 'bar');
def paramsAction = new ParametersAction(fooParam)
println "Scheduling dependent job"
def currentJob = ???
def cause = new Cause.UpstreamCause(currentBuild)
def causeAction = new hudson.model.CauseAction(cause)
instance.queue.schedule(job, 0, causeAction, paramsAction)
}
The CauseAction
constructor (Seen on http://javadoc.jenkins-ci.org/hudson/model/Cause.UpstreamCause.html) requires a Run
object, which the current build object should be an instance of. I just can't find a good way to get the current running job build inside of a Groovy script.
Best Answer
If in your Jenkins job you are using Groovy plug-in, then inside
Execute system Groovy script
step the plug-in already provides you access to some predefined variables:For example:
Outputs: