我的 Jenkins 工作层次结构如下所示:
Collection/
ParentJob
Children/
Foo
Bar
Baz
ParentJob 有一些不同的配置,Children/中的作业需要为每个配置构建。这些配置基本上只是检查不同的分支并构建这些分支。此外,ParentJob 的每个配置的一部分都必须在子作业运行之前完成。
每个ParentJob配置的必要部分完成后,如何触发Children中的所有作业?
我的第一个想法是在 ParentJob 的管道中添加一个 build 'Children/*'
步骤,但 Jenkins 似乎不支持该上下文中的通配符。
我可以明确列出所有作业,但这会很乏味(有几十个子作业),并且由于可能添加或删除子作业而容易损坏。
理想情况下,解决方案允许我只设置一个新的子作业,而无需触及其他任何内容,并在下次 ParentJob 运行时自动触发它。
最佳答案
您可以获取子作业列表并使用 for
循环来构建它们。我还没有测试过这个,但我认为没有理由它不起作用。
我以类似的方式构建我的作业文件夹,以利用命名约定和基于角色的安全性。
import jenkins.model.*
def childJobNames = Jenkins.instance.getJobNames().findAll { it.contains("Collection/Children") }
for (def childJobName : childJobsNames)
{
build job: childJobName, parameters: [
string(name: 'Computer', value: manager.ComputerName)
],
wait: false
}
http://javadoc.jenkins.io/index.html?hudson/model/Hudson.html
关于jenkins - 如何在 Jenkins 管道中一次触发多个作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46816549/