【问题标题】:Jenkins: Trigger related builds in a specific order when any of them are triggered by SCMJenkins:当 SCM 触发任何构建时,按特定顺序触发相关构建
【发布时间】:2013-01-15 13:26:53
【问题描述】:

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

当 SCM 轮询触发三个项目中的任何一个时,有没有办法按 A、B、C 的顺序触发?

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

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

编辑:下面的答案似乎是最好的选择,但我正在使用 Mercurial,无法找到查看多个 Mercurial 存储库的方法。

【问题讨论】:

    标签: build jenkins hudson integration polling


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 这将是理想的,但我正在使用 Mercurial 插件,我找不到轮询多个 repos 的方法。
      • 啊,找到了“多个 SCM”插件。这是一个概念证明,但似乎完美地完成了这项工作。谢谢
      • 好吧,我认为它可以工作,但在多个 SCM 中似乎存在一个严重错误,这意味着......您无法检查多个 mercurial 存储库(插件在修订号之间混淆)。我要回答这个问题,因为这似乎是最好的方法,只是还没有适合 mercurial 的插件。如果您有任何建议,请告诉我
      • 嗯,从未使用过 Mercurial,SVN 允许简单地添加多个结帐位置。如果重新组织 SCM 是一个选项,您可以使所有 3 个位置都在 1 个父位置下,然后仅签出该父位置
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 2017-12-25
      • 2023-03-27
      相关资源
      最近更新 更多