【问题标题】:Jenkins - skip a upstream project in build pipelineJenkins - 在构建管道中跳过上游项目
【发布时间】:2013-07-28 02:26:13
【问题描述】:

我正在尝试建立一个复杂的构建管道,依赖关系图如下所示。

      Prj-A
        |
      Prj-B
  /     |    \ 
Prj-C Prj-D Prj-E
 |      |     |
 |      |     |
 |      |     |
 --------------
        |
      Prj-F

管道从 Prj-A 开始,然后是 Prj-B。 Prj-C D E 可以并行运行。当 Prj-C、D、E 都完成后,运行 Prj-F。

其中一个要求是,例如,由于 Prj-C 依赖于 Prj-A 和 Prj-B,如果只有 Prj-C 中的源代码是,我只想运行 Prj-C 然后 Prj-G改变了。这是为了避免构建其他作业以节省整个构建时间。

经过大量谷歌搜索,我没有发现任何解决方案可用于此类情况。所以我想到的解决方案(我不尝试)是:

  1. 为每个项目创建一个触发器作业,它只检查该项目的源代码是否更改,因此我们将有 7 个触发器作业。
  2. 为管道创建依赖解析器作业。
  3. 当任何触发器作业检测到更改时,它都会触发依赖关系解析器作业。依赖解析器作业会知道哪个项目被更改,并确定在此构建中可以跳过的项目,并设置相应的环境变量。例如,当更改 Prj-C 时,它设置 skip-proja=true,skip-projb=true,skip-projd=true,skip proj-e=true。之后,它会触发构建管道。
  4. 每个项目运行时,根据依赖解析作业设置的环境变量检查是否可以跳过。

希望我已经理解了,请让我知道是否有针对此案例的其他解决方案或您的 cmets 在我的解决方案中。谢谢!

【问题讨论】:

    标签: jenkins build-pipeline


    【解决方案1】:

    您的解决方案似乎可行,但理想情况下,您希望 proj-f 仅使用从 B 的相同版本(构建计数器)传递的 C、D 和 E 的组合触发。

    对于如此复杂的设置,最好使用像Go(我在那里工作)这样的工具,它是在考虑这些场景的基础上构建的。除非您有一个可以理解扇入的工具,否则您的扇入场景可能会导致虚假构建。

    http://support.thoughtworks.com/entries/22229668-Go-s-Dependency-Management

    http://www.thoughtworks-studios.com/go-continuous-delivery/compare

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 2020-01-30
      • 2020-07-18
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多