我想寫一個詹金斯工作(說CopyJob)複製另一個工作(在這個工作中使用Multijob插件),並且還將其所有下游工作複製到新工作。這個想法是有一個Multijob作爲一個模板,因此它可以被複制到新的Multijobs(例如特定的分支或特徵)。複製詹金斯Multijob工作和所有下游工作通過groovy工作
參見:
MultiJob_Template
|
+-- Sub1_Template
+-- Sub2_Template
+-- Sub3_Template
CopyJob (Parameters: NewSuffix)
當手動觸發「CopyJob」應創建新的子作業新多椎:
MultiJob_BranchXYZ
|
+-- Sub1_BranchXYZ
+-- Sub2_BranchXYZ
+-- Sub3_BranchXYZ
到目前爲止,我是成功的copiing的多椎和copiing的子作業,但我找不到一種方法讓新的Multijob實際上依賴於新的Subjobs。 我的代碼(用於CopyJob Groovy腳本)到目前爲止是:
import jenkins.model.*
import com.tikal.jenkins.plugins.multijob.*
def templateJobName = "MultiJob_Template"
// Retrieve parameters
def newSfx = build.buildVariableResolver.resolve("NewSuffix")
def templateJob = Jenkins.instance.getJob(templateJobName)
// copy Multijob
def newJob = Jenkins.instance.copy(templateJob, 'Multijob_' + newSfx)
newJob.save()
// copy all downstreamjobs
def subs = newJob.getDownstreamProjects()
for (s in subs) {
def oldSubJob = Jenkins.instance.getJob(s.getDisplayName())
def newSubJob = Jenkins.instance.copy(oldSubJob, s.getDisplayName().replaceFirst(/Template/, newSfx))
newSubJob.save()
// how to update the MultiJob_newSfx DownstreamJoblist to use the newSubJob?
// ????
}