Jenkins(Hudson)-在并行构建之间管理依赖项

5

我想使用Jenkins或Hudson创建一个构建流程,其中包含分支和合并点,例如:

     job A
    /      \
 job B    job C
   |        |
 job D      |
    \      /
     job E

我想要创建类似于串并联图这样的任意图,并让Jenkins在可用从机时自由调度执行B/D和C的并行操作。 Join插件会在B执行后立即加入。Build Pipeline插件不支持分叉/汇合点。不确定Throttle Concurrent Builds插件(或已弃用的Locks & Latches插件)是否支持此功能;如果支持,我也无法找到如何实现的方法。一个解决方案是使用Apache Ivy指定构建依赖关系并使用Ivy插件。然而,我的工作都是Makefile C/C++/shell脚本工作,我没有使用过Ivy来验证是否可行。
在Jenkins中指定并行作业及其依赖关系的最佳方法是什么?
2个回答

7

有一个Build Flow插件可以满足这个需求。它定义了一种用于指定并行作业的DSL。你的示例可能会像这样编写:

build("job A")
parallel (
    {
        build("job B")
        build("job D")
    },
    {
        build("job C")
    }
)
build("job E")

我刚刚找到了它,而且正是我想要的东西。

2
有一个可能适用于您的解决方案。它要求所有构建都从单个作业开始,并以每个链末尾的一系列明确作业结束;在您的图表中,“作业A”将是起始作业,作业C和D将是终止作业。
让作业A创建一个指纹文件。作业A可以启动多个构建链,例如B/D和C。也在作业A上,通过Promotions Plugin添加促销,其条件是连续作业的成功完成-在本例中为C和D。作为促销的一部分,包括对最终作业(在您的情况下为作业E)的触发器。这可以使用Parameterized Trigger Plugin完成。然后,请确保促销条件中列出的每个作业也指纹相同的文件并获得相同的指纹;我使用Copy Artifact Plugin来确保每次都获得完全相同的文件。

谢谢!我还没有尝试过将Promotions插件与Parameterized Trigger结合使用,我会试一试。已经在使用带有指纹的Copy Artifact插件了。 - Martijn Rutten
运行得非常好。指纹识别需要将作业E标记为作业A的下游作业。我没有意识到指纹识别可以用于这个目的。非常感谢。 - Martijn Rutten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接