[英]Jenkins Poll scm for specific branch with regex
我有两个 Jenkins 管道作业:-
main
分支上有代码更改时应该触发main
分支以外的任何分支发生代码更改时应触发我已经为 GitHub 存储库上每分钟轮询更改的两个作业启用了Poll SCM
选项。 请注意,在我的情况下,轮询是唯一可行的选项。
分支作业配置
从 Branch 作业的配置中可以看出,它正在使用*/*
寻找任何分支,而不是它应该寻找除main
分支之外的任何分支。 如果我尝试在那里添加任何正则表达式,例如(?..*main).*$
,那么 Jenkins 会给出错误,因为它无法解析正则表达式。 如果有人能指出一种使这项工作有效的方法,我将不胜感激。
仅供参考: Jenkinsfile
具有管道阶段 - 构建、测试和发布,因为结帐是从管道配置本身处理的。
在Additional Behaviors部分有一个名为Strategy 的选项,用于选择要构建的内容。
添加它时,您将有多种选择策略的选项,其中之一是Inverse :
构建除与上面配置的分支说明符匹配的分支之外的所有分支。 这很有用,例如,当您有构建主分支和各种发布分支的工作,并且您想要构建所有新功能分支的第二个工作 - 即与这些模式不匹配的分支 - 而无需重复构建主分支和发布分支时他们改变的时间。
因此,只需添加该选项,将其设置为Inverse并将您的分支说明符设置为*/main
- 这将导致作业为任何非主分支(或模式中指定的任何其他分支)运行。
您可以采取的另一种方法是为所有分支创建一个作业,然后使用when
指令的内置分支条件分隔不同的阶段逻辑:
stage('Tests'){
when {
branch 'master'
}
steps {
...
}
}
stage('Upload'){
when {
branch pattern: "release-\\d+", comparator: "REGEXP"
}
steps {
...
}
}
当所有分支的大部分代码都相同时,这非常有用,但您对特定分支有一些额外的阶段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.