【发布时间】:2014-09-11 13:18:10
【问题描述】:
我正在尝试编写一个 Jenkins 作业(例如 CopyJob),它复制另一个作业(在此作业中使用 Multijob 插件)并将其所有下游作业复制到新作业。这个想法是有一个 Multijob 作为模板,以便可以将其复制到新的 Multijobs(例如,用于特定分支或功能)。
见:
MultiJob_Template
|
+-- Sub1_Template
+-- Sub2_Template
+-- Sub3_Template
CopyJob (Parameters: NewSuffix)
当手动触发“CopyJob”时,它将创建一个带有新 SubJobs 的新 MultiJob:
MultiJob_BranchXYZ
|
+-- Sub1_BranchXYZ
+-- Sub2_BranchXYZ
+-- Sub3_BranchXYZ
到目前为止,我成功地复制了 Multijob 和复制了 Subjobs,但我找不到让新的 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?
// ????
}
【问题讨论】: