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 加载的(可能是直接写在界面上的脚本)。" } } } "批量修改执行完毕,请查看下方日志确认每个 Job 的结果。"