2013-03-15 70 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