Jenkins/Hudson - 如何以超过1级深度并行运行多个作业?

vds*_*dsf 10 continuous-integration hudson build jenkins jenkins-plugins

我正试图在Jenkins中并行运行以下工作流程.例如,A和B同时运行.A一完成同时运行A2和A3等等......

这似乎是一个非常常见的用例,但我尝试过的大多数插件都不支持超过1级深度,下面的A分支就是这种情况.加入插件在这里似乎没有帮助.

读到了有关使用Promotion插件的内容,但是我对有关指纹/工件的归档以使其工作有点神秘感.

关于如何使这个简单的构建管道工作的任何线索?

流

Pet*_*rik 7

正如jgritty指出的,您可以使用Build flow plugin。为了获得您想要的并行执行类型,您可以运行与以下构建流程脚本等效的内容:

buildTrigger = build("Trigger")

parallel(
    {
        buildA = build("A")
        buildA1 = build("A1")
        parallel(
            {
                buildA2 = build("A2")
            },
            {
                buildA3 = build("A3")
            },
        )
    },
    {
        buildB = build("B")
        buildB1 = build("B1")
    },
)

buildResults = build("GatherResult")
Run Code Online (Sandbox Code Playgroud)

在这个脚本中,第一个parallel块负责 A 和 B 分支。一旦进入分支,每个构建都是连续的,直到您添加更多parallel块。


Ste*_*sed 7

有一个非常有效的解决方案:Multi-Job 插件。它完全符合您的要求。使用MultiJob 插件,您可以将您的工作拆分为连续运行的阶段。在每个阶段,作业并行运行。

为简单起见,我将假设 A 和 B 是您希望并行运行的“编译作业”。进一步假设可能有 A-Test(及其子项)和 B-Test,它们也是不同的工作。

您可以按如下方式创建多作业:New Item -> Multijob Project

在项目中创建两个阶段(添加构建步骤“MultiJob Phase”)。第一个是 COMPILE,您将添加 Phase Job 的“A”和“B”。

您可以更改 COMPILE 阶段作业的选项,以便如果任一阶段失败,则整个阶段中止(默认),或允许作业继续。

多作业设置

接下来,您为 TEST添加另一个 MultiJob Phase Build步骤,并向其添加“A-Test”和“B-Test”。请记住,A、B、A-Test 和 B-Test 都是独立的作业,如果需要,也可以单独运行。

就是这样。当作业运行时,它将包含指向子作业的链接,因此您可以看到子作业发生了什么。


jgr*_*tty 1

我相信可能是您需要的插件。