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

All*_*uky 4 jenkins jenkins-pipeline multibranch-pipeline

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

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

当前,每个多分支管道在此Filter by name (with wildcards)字段中具有相同的分支字符串。每次我们希望Jenkins开始建立一个新分支时,我们都要遍历所有7个多分支项目配置,并更新此字段以包括新分支。

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

谢谢你的帮助!艾伦

dus*_*ant 10

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

为图像添加通配符

在这个例子中,它只会发现 qa 和 dev 分支。

NOTE: You have to use "Discover branches" also with "filter by name (with wildcards)" behaviour.
Run Code Online (Sandbox Code Playgroud)


Maj*_*iak 8

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

(master|develop|release.*|feature.*|bugfix.*)
Run Code Online (Sandbox Code Playgroud)

很好地覆盖了存储库。也就是说,假设您遵循Git Flow或类似方法。不幸的是,没有一种简单的方法可以在一个存储库中的MultiBranch Pipelines构建之间同步配置。Multibranch Pipeline和Organization插件均未设计为可与多个Jenkinsfiles一起使用。

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