Build Jenkins:当SCM触发任何一个构建时,以特定顺序触发相关构建

Build Jenkins:当SCM触发任何一个构建时,以特定顺序触发相关构建,build,jenkins,hudson,integration,polling,Build,Jenkins,Hudson,Integration,Polling,假设我有三个作业,A、B和C。它们都运行相互交互的集成测试。C依赖于B,B依赖于A 当SCM轮询触发三个项目中的任何一个时,是否有方法按顺序触发a、B、C 例如,我将代码签入A,几分钟后我将代码签入C。我需要先构建A,然后构建B以运行集成测试,然后构建C。但我不能用传统的轮询间隔保证这一点 我看过参数化的构建插件,但是如果没有无限的构建循环,我想不出一个方法来实现它 编辑:下面的答案似乎是最好的选择,但我正在使用Mercurial,无法找到一种方法签出多个Mercurial回购。一种方法是将作业

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

当SCM轮询触发三个项目中的任何一个时,是否有方法按顺序触发a、B、C

例如,我将代码签入A,几分钟后我将代码签入C。我需要先构建A,然后构建B以运行集成测试,然后构建C。但我不能用传统的轮询间隔保证这一点

我看过参数化的构建插件,但是如果没有无限的构建循环,我想不出一个方法来实现它


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

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

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


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

如果这是一个陈旧的问题,但如果您仍在处理此问题(或者其他人遇到此问题,就像我在搜索类似问题时遇到的一样),我有一个替代方法可以使用:

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

“不同步”可能不是必需的(只是在相关作业中再次同步),但会保留当前链的确切功能。

这将是理想的,但我使用Mercurial插件,无法找到轮询多个repo的方法。啊,找到了“多个SCM”插件。这是一个概念证明,但似乎做得很完美。谢天谢地,我以为它能工作,但在多个SCM中似乎有一个严重的错误,这意味着。。。你不能签出多个mercurial repos(插件在版本号之间会混淆)。我会留下这个答案,因为这似乎是最好的方法,只是还没有适合mercurial的插件。如果你有任何建议让我知道,嗯,从来没有使用过Mercurial,SVN允许简单地添加多个结账位置。如果可以选择重新组织SCM,则可以使所有3个位置都位于1个父位置下,然后仅签出该父位置