声明式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
相关产品推荐
相关产品推荐

