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

声明式Jenkins Pipeline:不删除SVN分支,缩减Jenkins显示分支数

嘿,针对你遇到的Jenkins多分支流水线分支越积越多的问题,我整理了几个实用的解决方案,不用手动删Jenkinsfile也能轻松把显示的分支控制在15个以内:

1. 用Jenkins内置过滤规则(零代码,最快上手)

直接在你的多分支流水线项目配置里就能搞定:

  • 打开项目的配置页面,找到「Branch Sources」这块区域
  • 点击对应源码仓库的「Advanced」按钮展开更多设置
  • 如果你想按时间过滤(合并后很久没更新的分支直接排除),就勾选「Filter by recent commit」,设置一个时间阈值(比如最近30天)——这样超过这个时间没提交的旧分支,Jenkins就不会再把它们加到分支列表里了
  • 要是你想更精准匹配分支名称,还可以在「Filter by name」里写正则表达式,比如只保留master、develop和前缀为feature/的最新分支,不过时间过滤对控制数量来说更实用
2. 用Groovy脚本精准控制分支数量(严格卡15个)

如果必须严格限制最多显示15个分支,那就试试分支索引排除脚本:

  • 同样在「Branch Sources」的「Advanced」里,找到「Exclude branches that match the following script」
  • 写一段Groovy脚本,让Jenkins只保留最近活跃的15个分支,其余的自动排除。示例脚本大概是这样:
// 把所有分支按最后提交时间倒序排序
def sortedBranches = scm.branches.sort { -it.lastCommitTimestamp }
// 只保留前15个,剩下的都排除
return !sortedBranches.take(15).contains(branch)

注意:这个脚本需要根据你的源码管理工具(比如Git)调整细节,确保能正确拿到分支的最后提交时间。每次Jenkins索引分支时都会跑这个脚本,自动帮你过滤超标的分支。

3. 给合并后的分支打标记,让Jenkins自动忽略

如果你们团队有给合并完成的分支打标签的习惯(比如打个merged标签),那可以利用这个标签来过滤:

  • 在「Filter by name」的正则里排除带有特定标签的分支,或者用脚本检查分支是否有merged标签,有就直接排除
  • 这种方式需要团队配合打标签,胜在规则清晰,后续维护起来很方便
4. 替代手动删Jenkinsfile的轻量方法

要是你实在想用修改Jenkinsfile的方式,其实不用删整个文件:

  • 只需要在合并后的分支里修改Jenkinsfile,加上skipDefaultCheckout true,或者直接让流水线执行空操作,Jenkins就会识别这个分支的流水线无效,自动从列表里移除它
  • 不过这个方法还是要改分支内容,不如前面的过滤方案省心

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:54:02