You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中创建新MBP后自动禁用旧的Multibranch Pipeline

Jenkins Seed Job 生成新MBP后自动禁用旧MBP实现方案

可实现性说明

完全可以实现,以下是两种生产环境常用的落地方案:

方案1:Job DSL 脚本内置逻辑

直接在你用于生成MBP的Groovy脚本末尾添加旧MBP禁用逻辑,新MBP生成完成后自动执行:

// 替换为你实际的新MBP名称、旧MBP匹配规则
def newMbpName = "new-project-mbp"
// 可按旧项目名、旧GitLab仓库地址等规则匹配旧MBP,无需硬编码也可实现
def oldMbp = Jenkins.instance.getItemByFullName("legacy-project-mbp")

// 校验旧MBP存在且为多分支项目类型,且未被禁用
if (oldMbp && oldMbp.class.name.contains("MultiBranchProject") && !oldMbp.isDisabled()) {
    oldMbp.setDisabled(true)
    oldMbp.save()
    println "自动禁用旧MBP成功:${oldMbp.fullName}"
}

注意事项:

  • 需要给Seed Job的运行用户授予Jenkins任务配置修改权限
  • 需要在Seed Job的安全配置中放开允许脚本调用Jenkins内部API的权限限制

方案2:Seed Job 后置执行步骤

给Seed Job添加构建后操作,确认新MBP生成成功后再执行禁用逻辑:

  • 进入Seed Job配置页,新增构建后操作→Execute system Groovy script
  • 填入匹配旧MBP的执行脚本,示例如下:
def jenkins = Jenkins.instance
// 可自定义匹配规则,比如遍历所有MBP过滤关联旧GitLab地址的项目批量处理
def legacyMbpList = ["legacy-project-1-mbp", "legacy-project-2-mbp"]

legacyMbpList.each { mbpName ->
    def mbp = jenkins.getItemByFullName(mbpName)
    if (mbp && mbp instanceof com.cloudbees.hudson.plugins.folder.AbstractFolder && !mbp.isDisabled()) {
        mbp.setDisabled(true)
        mbp.save()
        println "已禁用旧MBP:${mbpName}"
    }
}
jenkins.save()

优化建议

  • 可添加前置校验逻辑,确认新MBP已成功创建、首次分支扫描正常完成后再执行禁用操作,避免新MBP生成异常导致业务中断
  • 禁用完成后可添加内部IM通知逻辑,同步给项目相关人员旧MBP下线状态

内容的提问来源于stack exchange,提问作者Hema B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:15:03