詹金斯/哈德森 - 如何并行超过1平深运行多个任务?(Jenkins/Hudson - How to

2019-08-02 17:22发布

我试图让下面的工作流程詹金斯运行并行。 因此,例如,A和B都运行在同一时间。 只要A完成在同一时间运行A2和A3,等...

这似乎是一个很常见的情况,但我想大多数的插件做不支持超过1级深,这是与下面的一个分支的情况。 加入插件似乎并没有帮助在这里。

我阅读有关使用推广的插件 ,但我什么指纹/文物存档,使这项工作有点迷惑不解。

如何使这个简单的构建流水线工作的任何线索?

Answer 1:

作为jgritty指出,你可以使用构建流程插件 。 为了得到你想要的,你可以运行下面的生成流脚本的东西相当于并行执行的类型:

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")

在该脚本中的第一parallel块负责将A和B分支。 一旦在一个分支,直到你添加更多的每个版本是顺序parallel块。



Answer 2:

有伟大的工程解决方案:在多作业插件 。 它不正是你想要的。 随着该多椎插件 ,你可以在你的工作分割成连续运行阶段。 在每个阶段中,作业并行运行。

为简单起见,我将假设A和B是“编纂工作”要并行运行。 进一步假定可以有A-测试(和它的儿童)和B-测试其也是单独的作业。

您创建多椎如下:新建项目 - >多椎项目

在该项目中创建两个阶段(添加构建步骤“多椎阶段”)。 第一个会被编译,你想补充阶段工作的“A”和“B”。

您可以更改编译阶段作业的选项,这样如果任一出现故障,整个阶段中止(默认),或让工作继续进行。

接下来您可以添加其他多椎阶段制作工序用于测试和“A-测试”和“B-测试”补充。 请记住,A,B,A-测试,和B超检查是如果需要,也可以单独运行的所有单独的作业。

而已。 当作业运行时,它将包含链接到子作业,所以你可以看到子作业发生了什么事。



Answer 3:

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



Answer 4:

我有一个类似的问题,并促进构建插件对我来说不是生成流插件,其他人已经建议一个更好的解决方案。

一个建立推广工作可以通过勾选复选框被添加到现有的工作“促进建立的时候......”。 您可以配置要发生的推广名为下游项目是通过检查“当下面的下游项目成功打造”条件下(假设所有下游项目由指纹相关的)完成时。

在推进步骤中,您可以触发汇总结果的电子邮件,或触发进一步的下游工作。

在这种情况下,你可能会促进作业添加到触发项目,依靠项目A2 A3和B1成功完成。



Answer 5:

使用建立在生成后段的其他项目。 说开始A2,A3对A1的完成。 增加执行人的数量管理哈德森 - >配置系统以适当的数量。



Answer 6:

我们有一个建立类似于“史蒂芬的轻松逗乐”建议。 除了我成立了“A”,并为自己多作业堆栈和另一个多作业设置为“触发”,“B”的路径。 其中两个“A”和“B”堆叠在并行运行。 这样,他们不直接对彼此紧密的依赖关系。 您也可以收集您的结果取决于如果一个/两个堆栈失败。 您还可以设置“触发”采集参数,然后传递给两个堆栈。



文章来源: Jenkins/Hudson - How to run multiple jobs in parallel more than 1 level deep?