我创建了一个Groovy脚本,用于需要访问当前作业的当前版本的Jenkins作业中的System Groovy Script
步骤。在Groovy脚本中访问当前的Jenkins内部版本
当使用Hudson.model Cause.UpstreamCause
将当前作业的当前版本链接到我正在调度的从属作业时,需要使用当前版本。
由于代码更简洁:
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)
}
的CauseAction
构造(见于http://javadoc.jenkins-ci.org/hudson/model/Cause.UpstreamCause.html)需要一个Run
对象,该对象的当前生成对象应的一个实例。我只是找不到一个好的方法来获取Groovy脚本中当前正在运行的作业。
我发现情况因人而异有点取决于什么叫Groovy脚本(如email-ext-plugin,后期制作动作)。通过运行作业'activeBuild = Thread.currentThread()。executable'可以工作。用旧的工作不起作用。使用预定义的var版本可能是最好的,如果它存在。为了在两种情况下获得构建对象,您可以执行类似于'try {c = build.getClass()} catch(Exception ex){try {build = Thread.currentThread()。executable} catch(Exception ex2){println( “哦,亲爱的,没有建立对象。”)}}'。 – gaoithe