我想配置一个 Jenkins 构建(“作业”),它将同时:
- 留意新分支并在它们出现时构建它们
- 根据请求构建命名分支或提交
我可以通过将“要构建的分支”设置为“**”来实现(1)
我可以通过使构建参数化并将“要构建的分支”设置为“$branch”来实现(2)(例如本教程)
有没有办法可以同时完成这两件事?
动机
我对 (1) 的用例是,我希望在合并到主分支之前对“功能分支”进行测试,这样我们就可以在代码审查/拉取请求时看到更改是否通过了所有测试。
我对 (2) 的用例是,有时构建由于虚假原因(如不稳定的测试)而失败,我想重新运行它,或者旧分支可能已从历史记录的底部掉下来,我想重新运行其测试。
答案1
如果您有一个没有默认值的参数化构建,并且还将您的工作设置为轮询您的源代码控制,Build Triggers > Poll SCM
那么它都应该可以工作。
重要的是,您的branch
参数没有默认值,因此$branch
当从轮询触发作业时为空,因为Branches to build
将空值解释为任何分支。
(请注意,这将构建每个提交,而不仅仅是按照(1)的“新分支”,而且任何按照您建议设置的解决方案也将构建Branches to build
。**
)
答案2
我也有同样的情况,启用“使用工作区强制轮询”可以解决问题。jenkins-ci.org/browse/JENKINS-29896