Jenkins(Hudson)-管理并行构建之间的依赖关系

Jenkins(Hudson)-管理并行构建之间的依赖关系,jenkins,parallel-processing,ivy,hudson-plugins,jenkins-plugins,Jenkins,Parallel Processing,Ivy,Hudson Plugins,Jenkins Plugins,使用Jenkins或Hudson,我想创建一个包含分叉点和连接点的构建管道,例如: job A / \ job B job C | | job D | \ / job E 我想创建这样的任意文件,并让Jenkins在有从机可用时可以自由地并行执行B/D和C B执行后,将立即加入。生成管道插件不支持分支/连接点。不确定Throttle Concurrent Builds插件(或弃用的锁和闩锁插件)是否

使用Jenkins或Hudson,我想创建一个包含分叉点和连接点的构建管道,例如:

     job A
    /      \
 job B    job C
   |        |
 job D      |
    \      /
     job E
我想创建这样的任意文件,并让Jenkins在有从机可用时可以自由地并行执行B/D和C

B执行后,将立即加入。生成管道插件不支持分支/连接点。不确定Throttle Concurrent Builds插件(或弃用的锁和闩锁插件)是否可以实现这一点;如果是这样的话,我想不出是怎么回事。一种解决方案是使用ApacheIvy指定构建依赖项并使用Ivy插件。然而,我的工作都是MakefileC/C++/shell脚本工作,我没有常春藤的经验来验证这是否可行


在Jenkins中指定并行作业及其依赖项的最佳方法是什么?

有一种解决方案可能适合您。它要求所有构建从单个作业开始,并在每个链的末尾以一系列确定的作业结束;在您的图表中,“作业A”将是起始作业,作业C和D将是终止作业

让作业创建指纹文件。然后,作业A可以启动多个构建链,在本例中为B/D和C。同样在工作A中,通过添加晋升,其标准是成功完成连续工作-在本例中为C和D。作为晋升的一部分,包括触发最终工作(在您的工作E中)。这可以通过。然后,确保你在晋升标准中列出的每一份工作都有相同的文件指纹,并获得相同的指纹;我使用来确保每次都得到完全相同的文件。

有一种方法可以满足这一需求。它定义了用于指定并行作业的DSL。您的示例可能是这样写的:

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

我刚找到它,它正是我想要的。

谢谢!我还没有尝试将促销插件与参数化触发器相结合。我要试一试。已经在使用带有指纹的复制工件插件了。效果很好。需要指纹识别才能将作业E标记为a的下游作业。我不知道指纹识别可以用于此。非常感谢。