Jenkins只在必要时触发依赖构建?

时间:2013-03-15 16:41:59

标签: ant jenkins

我有以下构建方案:

项目C取决于依赖于项目A的项目B

项目X依赖于C,项目Y依赖于B,项目Z依赖于A.

还有许多其他模块具有依赖关系,但最“复杂”的构建关系是项目X.要在Jenkins中设置它,我使用了参数化触发器插件,“块直到触发项目已完成构建“ 选项。每个可构建模块都有自己的Jenkins作业,该插件用于阻止必要的依赖构建作业。

我在这个设置中遇到了两个问题。

  1. 项目A和B多次构建,因为它们位于项目X,Y,Z等的传递依赖链中。
  2. Jenkins有时会完全阻止构建项目,因为作业X,Y,Z等的构建已经填满了所有可用的执行程序(由scm更改触发),并且依赖项目在队列中等待构建。
  3. 我正在寻找有关如何为这样的构建环境配置Jenkins的建议。我是Jenkins的新手,所以我不确切知道有哪些选项可以解决这个问题。

    编辑:

    所有作业都由SCM更改触发。依赖项目也由参数化触发插件触发; “阻止直到被触发的项目完成他们的构建”选项。

1 个答案:

答案 0 :(得分:2)

Jenkins有多种触发构建方式。最常见的是通过观察存储库更改。

但是,您也可以在另一个作业完成构建后自动触发构建。这是詹金斯的内置。在构建触发器下查看并选中复选框Build after other projects are built,或在构建后部分中,选择构建其他项目构建后操作。并且,您可以在构建上拥有多个触发器,因此如果来自另一个项目的依赖项发生更改或源文件发生更改,则可能会发生构建。

如果您使用Maven或Ivy,如果项目使用的Maven / Ivy jar依赖项发生更改,则可以使用插件来触发构建。

另一个有用的插件是Copy Artifacts Plugin。这允许您将构建工件从项目“X”复制到项目“Y”以用于项目“Y”以用于构建。