如何通过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
相关产品推荐
相关产品推荐

