我創建了一個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