2013-03-15 69 views
1

我有以下生成方案:詹金斯只在必要时触发依赖性构建?

项目C依赖于项目B依赖于项目A

项目X取决于C,项目ÿ依赖于B,项目ž取决于A.

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

我遇到了这个设置的2个问题。

  1. 项目A和B克服建造了许多倍,因为他们都在传递依赖链项目X,Y,Z等
  2. 詹金斯,有时被完全阻断建设项目,因为建立就业X ,Y,Z等已经填满了所有可用的执行者(由scm更改触发),并且依赖项目正在队列中等待构建。

我正在寻找关于如何为这样的构建环境配置Jenkins的建议。我是詹金斯的新手,所以我不确切知道哪些选项可用于解决此问题。

编辑:

所有的工作都是由SCM更改触发的。相关项目也由参数化触发器插件触发; “直到触发项目完成构建”选项。

+0

你能列出什么样的机制(S)你使用触发每个版本 - SCM变化,使用类似常春藤插件依赖性变化,由上游建设等引发的?如果某些构建是由多种机制触发的,则可以简化触发器。 – 2013-03-15 16:50:33

+0

@gareth_bowles编辑的问题。 – Josiah 2013-03-15 18:33:04

回答

2

詹金斯有多种方式触发构建。最常见的是通过监视存储库更改。

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

如果你使用Maven或常春藤,有可以用来触发构建的插件,如果该项目使用变化的Maven的/常春藤JAR依赖。

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

+0

maven插件是否会触发对现有jar版本的更改,例如快照版本?或者,它只会寻找增加的版本? – Josiah 2013-03-15 19:24:01

+0

根据[Maven dependency updater trigger plugin](https://wiki.jenkins-ci。org/display/JENKINS/Maven + Dependency + Update + trigger):这个插件会检查在您的项目的依赖关系解析期间是否有*** SNAPSHOT ***依赖项(或者可选插件SNAPSHOT)更新并触发构建。只要你的依赖是快照,这应该工作。 – 2013-03-17 02:48:42