声明式 Jenkins 管道:如何从项目中删除分支而不从 svn 中删除它们?

Declarative Jenkins pipeline: how to remove branches from the Project without deleting them from svn?

我们有多分支管道项目来构建每个提交。 由于每个错误和功能都在单独的分支中完成 - 我在 Jenkins 项目(多分支管道)中的分支列表自动增长得非常快。

我想将分支 # 保持在 15 以下以显示在 Jenkins 中。 问题是我们 DONT REMOVE feature branches 在合并到主分支(master)后 - 因此 Jenkins 仍在索引它们。

我的调查导致:

1) 我可以手动从这些分支中的每一个中删除 Jenkinsfile,这是一个糟糕的解决方案。

2) 我尝试在声明性管道中使用 "Orphaned Item Strategy",但它只会删除某些分支上的 "builds" 而不是 Jenkins 视图中的分支本身。

我是 Jenkins 和声明式管道的新手 - 也许有解决的好方法?

要回答您的问题如何在不从 SVN 中删除的情况下删除分支,据我所知,您需要做的 doing.All 是不可能的,也不是理想的方式它清理 SVN 中的分支。因为the reason for using multibranch-pipeline is to have pipeline for every individual branch.

正如您所说,问题是不清理 SVN 中的分支并删除每个分支中的 Jenkinsfile 确实是一个糟糕的解决方案。为所有分支和 PR 自动构建会给 Jenkins 带来负载,并进一步减慢构建和部署过程。

因此,作为解决方法,我们可以做的是 通过限制分支在发生提交时自动构建来减少 Jenkins 的负载,类似这样。

This will auto build only for master, develop branches and all the PRs 是强制性的。除了这些之外,任何其他功能分支或用户故事分支都需要使用 "Build Now" 手动构建,为此作业将作为多分支管道的一部分自动创建。

您甚至可以 exclude/include 通过相应配置来创建分支。但这需要定期监控以在需要时排除和包括它们。

希望这在一定程度上有所帮助。谢谢!