Jenkins:当SCM触发任何一个时,触发相关的构建

时间:2013-01-15 13:26:54

标签: build jenkins hudson integration polling

假设我有三个工作,A,B和C.它们都运行相互交互的集成测试。 C依赖于B,B依赖于A.

当SCM民意调查触发三个项目中的任何一个时,有没有办法触发A,然后是B,然后按顺序触发C?

E.g。我将代码检入A,几分钟后我将代码检入C.我需要首先构建A,然后构建B以运行集成测试,然后构建C.但我不能保证这与常规轮询间隔。< / p>

我看过参数化的构建插件,但是如果没有无限的构建循环,我无法找到一种方法。

编辑:下面的答案似乎是最好的选择,但我正在使用Mercurial并且无法找到检查多个Mercurial回购的方法。

2 个答案:

答案 0 :(得分:2)

当然这是一个陈旧的问题,但如果你还在处理这个问题,我可以使用另一种选择(或者其他人像我在搜索类似问题时那样运行):

  • 作业A1 - 轮询回购A但不同步,触发作业A2
  • 作业B1 - 轮询回购B但未同步,触发作业A2
  • 作业C1 - 轮询回购C但不同步,触发作业A2
  • 作业A2 - 当前作业A,触发作业B2
  • 作业B2 - 当前作业B,触发作业C2
  • 工作C2 - 当前工作C

&#34;不同步&#34;可能没有必要(它只会在相关工作上再次同步),但会保留当前链的确切功能。

答案 1 :(得分:1)

一种方法是将作业A配置为始终触发作业B,将作业B配置为始终触发作业C.这将确保它们按您所需的顺序运行。

现在,您希望SCM更改为3个作业中的任何一个以启动链。在作业A中,您可以对所有3个存储库位置执行SCM检出(只是不要在作业A中使用它们)。

这样,轮询将应用于所有3个位置,将触发作业A,进而触发您想要的正确链