批量修改所有以 budget-dt- 开头的流水线任务的分支
println "⚠️ 跳过: 该流水线不是通过 SCM 加载的(可能是直接写在界面上的脚本)。println "✅ 已成功更新分支为: ${newBranch}"println "⚠️ 跳过: 该流水线不使用 Git 源码管理。println "--- 正在处理: ${job.name} ---"// 构建包含新分支的 SCM 配置。// 将新配置应用回 Job 并保存。// 确保它是从 Git
·
好用! 修改def jobPrefix = "budget-dt-" def newBranch = "*/dt-test" 这两个为实际的就可以了
import jenkins.model.*
import hudson.model.*
import hudson.plugins.git.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
import org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition
// 1. 设置匹配前缀和新分支
def jobPrefix = "budget-dt-"
def newBranch = "*/dt-test"
// 2. 遍历所有流水线 Job (WorkflowJob)
Jenkins.instance.getAllItems(WorkflowJob.class).each { job ->
// 检查名字是否以 budget-dt- 开头
if (job.name.startsWith(jobPrefix)) {
println "--- 正在处理: ${job.name} ---"
def definition = job.getDefinition()
// 确保它是从 Git/SCM 获取脚本的流水线
if (definition instanceof CpsScmFlowDefinition) {
def scm = definition.getScm()
if (scm instanceof GitSCM) {
// 构建包含新分支的 SCM 配置
def newScm = new GitSCM(
scm.getUserRemoteConfigs(),
[new BranchSpec(newBranch)],
scm.isDoGenerateSubmoduleConfigurations(),
scm.getSubmoduleCfg(),
scm.getBrowser(),
scm.getGitTool(),
scm.getExtensions()
)
// 将新配置应用回 Job 并保存
job.setDefinition(new CpsScmFlowDefinition(newScm, definition.getScriptPath()))
job.save()
println "✅ 已成功更新分支为: ${newBranch}"
} else {
println "⚠️ 跳过: 该流水线不使用 Git 源码管理。"
}
} else {
println "⚠️ 跳过: 该流水线不是通过 SCM 加载的(可能是直接写在界面上的脚本)。"
}
}
}
println "批量修改执行完毕,请查看上方日志确认每个 Job 的结果。"

更多推荐
所有评论(0)