jenkins - 如何在 Jenkins 管道中一次触发多个作业?

标签 jenkins jenkins-pipeline

我的 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/

相关文章:

jenkins - 如何让 Jenkins 构建将故障报告回 Bitbucket 服务器?

jenkins - 在 Jenkins 上使用带有警告插件和管道的 PyLint

jenkins - 使用管道共享库访问 Jenkins 实例

android - 我如何告诉 Jenkins 在构建之间保留 Android SDK?

jenkins - 不推荐使用不带 block 参数的 ‘stage’ 步骤

linux - 如何使用 shell 脚本解析 JSON?

Jenkins - 从文件系统而不是 SCM 加载全局管道库?

jenkins - 如何在 Jenkins 管道中使用运行参数

jenkins - 我的 jenkins 管道可以有一个可重用的 "post" block 吗?

jenkins - 从(jenkins)docker容器访问docker主机