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

如何通过Jenkins脚本控制台程序化配置多分支流水线的Branch Sources行为?

Jenkins多分支流水线批量配置Branch Sources Behaviors

以下是通过Jenkins脚本控制台批量修改多分支流水线「Branch Sources -> Behaviors」的核心代码,假设你已通过筛选得到目标任务集合(示例中用targetJobs变量指代):

核心修改代码

import jenkins.plugins.git.traits.*
import org.jenkinsci.plugins.workflow.multibranch.BranchSource
import hudson.plugins.git.GitSCM

// 遍历所有目标多分支任务
targetJobs.each { job ->
    job.getBranchSources().each { branchSource ->
        def scm = branchSource.getSource()
        // 仅处理Git类型的分支源
        if (scm instanceof GitSCM) {
            // 清空原有Behaviors配置
            scm.getTraits().clear()

            // 👇 添加你需要的Behaviors规则,以下为常见示例
            // 示例1:只拉取main、develop分支
            scm.getTraits().add(new BranchDiscoveryTrait(3)) // 3代表仅发现指定分支
            scm.getTraits().add(new NamedBranchFilterTrait("main,develop"))

            // 示例2:禁用Pull Request发现
            scm.getTraits().add(new PullRequestDiscoveryTrait(0)) // 0代表禁用PR扫描

            // 示例3:禁用标签发现
            scm.getTraits().add(new TagDiscoveryTrait(0)) // 0代表不扫描标签

            // 示例4:发现所有远程分支
            // scm.getTraits().add(new BranchDiscoveryTrait(1))
        }
    }
    // 保存任务配置
    job.save()
    println "已完成任务配置更新: ${job.name}"
}

关键参数说明

  • BranchDiscoveryTrait参数:
    • 1: 发现所有远程分支
    • 3: 仅发现指定名称的分支(需配合NamedBranchFilterTrait使用)
  • PullRequestDiscoveryTrait参数:
    • 0: 禁用PR发现
    • 1: 发现所有PR的合并结果
    • 2: 发现所有PR的源分支
  • NamedBranchFilterTrait:传入逗号分隔的分支名字符串,指定允许拉取的分支

注意事项

  • 执行前请先在单个测试任务上验证脚本逻辑,避免批量操作出错
  • 不同版本的Git插件可能存在Trait类的细微差异,若报错请核对插件版本对应的API
  • 脚本执行后建议手动触发任务的分支扫描,确认配置生效

内容的提问来源于stack exchange,提问作者Chris F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:54:59