4

使用詹金斯或哈德森我想创建与叉构建的管道和连接点,例如:詹金斯(哈德森) - 并行之间管理依赖构建

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

我想创建任意series-parallel graphs像这使得詹金斯有了调度的自由,只要有一个从机可用,就可以并行执行B/D和C.

Join Plugin在B执行后立即加入。 Build Pipeline Plugin不支持fork/join点。不知道这是可能的与油门并发构建插件(或不推荐使用锁定&锁存插件);如果是这样,我无法弄清楚如何。一种解决方案可能是用Apache Ivy指定构建依赖关系并使用Ivy插件。但是,我的作业都是Makefile C/C++/shell脚本作业,我没有常青藤的经验来验证这是否可行。

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

回答

6

有一个Build Flow plugin满足这个非常需要。它定义了一个用于指定并行作业的DSL。你的例子可能是这样写的:

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

我刚刚发现它,它正是我所期待的。

2

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

有工作创建指纹文件。在这个例子中,作业A可以启动多个构建链,B/D和C.同样在工作A上,通过Promotions Plugin添加促销活动,其标准是成功完成相继的工作 - 在本例中为C和D.作为促销的一部分,包括最终工作的触发器,在您的案例中工作E这可以通过Parameterized Trigger Plugin完成。然后,确保您在促销标准中列出的每个作业都能指纹相同的文件并获得相同的指纹;我使用Copy Artifact Plugin来确保每次都获得完全相同的文件。

+0

谢谢!我还没有试过促销插件与参数化触发器的组合。我会给它一个镜头。已经使用带指纹的Copy Artifact Plugin。 – 2012-02-03 20:52:46

+0

工程就像一个魅力。指纹需要将作业E标记为A的下游作业。我不知道可以使用指纹识别。高度赞赏。 – 2012-02-03 21:41:48

相关问题