Jenkins Multibranch Config:如何根据变量字符串过滤分支?

Jenkins Multibranch Config: How to Filter branches based on variable string?

我们让 Jenkins 设置了 7 个多分支管道项目,每个项目都基于相同的 git 存储库构建,但针对不同的目标平台。这些多分支管道中的每一个都构建了许多分支。我们目前通过在多分支项目配置中使用以下 属性 来设置每个多分支管道构建的分支:

Branch Sources -> Git -> Behaviors -> Filter by name (with wildcards)

目前,每个多分支管道在此 Filter by name (with wildcards) 字段中都有相同的分支字符串。每次我们希望 Jenkins 开始构建新分支时,我们都会检查所有 7 个多分支项目配置并更新此字段以包含新分支。

每次都检查每个配置并更改此字段有点痛苦,因为我们总是希望每个配置都具有相同的分支列表。是否可以在此字段中简单地使用某种类型的变量?这样我们只需要改变一个位置,而不是试图保持 7 个不同的配置彼此同步,这很容易出错,也有点痛苦。

感谢您的帮助! 艾伦

您可以尝试使用正则表达式过滤分支,而不是使用通配符进行过滤。在我们的例子中,模式如下:

(master|develop|release.*|feature.*|bugfix.*)

一直在很好地覆盖存储库。也就是说,假设您遵循 Git Flow 或类似的方法。不幸的是,没有简单的方法来同步从一个存储库构建的多分支管道之间的配置。 Multibranch Pipeline 和 Organization 插件都不是为与多个 Jenkinsfiles 一起工作而设计的。

此外,您可以尝试使用 Jenkins 脚本控制台仅同步项目之间的分支配置。大多数作业配置不必在项目级别设置。例如,您可以创建共享脚本(或共享库)以供其他作业使用,以便为每个作业设置相同的作业属性。有关详细信息,请参阅 How do you load a groovy file and execute it

如果你想使用通配符,你可以像下面这样提供:

在此示例中,它将仅发现 qa 和 dev 分支。

NOTE: You have to use "Discover branches" also with "filter by name (with wildcards)" behaviour.