20

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

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

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

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

谢谢你的帮助!艾伦

4

2 回答 2

33

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

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

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

此外,您可以尝试使用 Jenkins 脚本控制台仅在项目之间同步分支配置。大多数作业配置不必在项目级别设置。例如,您可以创建由其他作业获取的共享脚本(或共享库),以在每个作业上设置相同的作业属性。有关详细信息,请参阅如何加载 groovy 文件并执行它

于 2018-04-25T10:17:27.880 回答
10

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

为图像添加通配符

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

NOTE: You have to use "Discover branches" also with "filter by name (with wildcards)" behaviour.
于 2019-05-22T06:28:46.700 回答