2016-08-22 100 views
0

我有一個有子項目的git項目。詹金斯git子項目項目的訂購

樣本表示:

parent 

    core 
    -src 
    -pom.xml 

    projA 
    -src 
    -pom.xml 

    projB 

    projB1 
    -src 
    -pom.xml 

    projB2 
    -src 
    -pom.xml 

    projC 
    -src 
    -pom.xml 

pom.xml (parent pom) 

projAprojB1projB2projC是獨立的項目,它採用內部core項目。 實際上,大約有8-10個獨立項目。

我正在使用Jenkins的CI。我使用git插件來獲取項目細節和maven插件來構建項目並運行測試用例。

我簡單地使用clean install的目標。

目前,我創建了一個單一的工作。一些項目花費更多時間(1-2小時)來運行所有測試用例。使用這種方法,項目的執行順序是隨機


  • 有沒有什麼更好的方法以更好的方式來處理這個和控制構建執行的順序,這樣我建脆弱模塊第一&穩定版本以後呢?
  • 建立後core模塊我想要並行構建其他模塊(2或3在一個時間)以快速構建過程。我怎樣才能做到這一點?

回答

1

在父項目上運行maven構建並不完全是隨機的。具體根據documentation

反應堆

,處理多模塊項目Maven中的機制被稱爲 到作爲反應器。 Maven的核心的這部分執行以下操作:

  • 收集所有可用的模塊,來構建
  • 排序的項目到正確的構建順序
  • 構建所選項目,以

Reactor Sorting

因爲多模塊內部的模塊可以相互依賴,所以 重要的是,反應堆以 保證在需要之前構建任何項目的方式對所有項目進行排序。

整理項目時,下面的關係感到非常榮幸:

  1. 在構建
  2. 插件聲明,其中插件是在構建上
  3. 插件依賴另一個模塊的另一個模塊上的項目依賴構建中的另一個模塊
  4. 在構建中的另一個模塊上構建擴展聲明
  5. <modules> elem中聲明的順序ENT(如果沒有其他規則適用)

請注意,只有「實例」引用用於 - dependencyManagement和pluginManagement元素不會造成 變化到反應器中的排序順序

由於它需要那麼長時間來構建它,我懷疑你也可能正在進行一些集成測試。因此,我試圖隔離它們並在夜間構建期間運行所有內容,同時在每次提交之後持續集成構建中運行(希望是&)快速單元測試。

關於並行性設置,有幾個選項有一個共同點:爲每個模塊創建一個作業。要列舉一些(你可以讀一個很好的說明了其中的一些here):

個人我只使用了隱式upstream-downstream支持maven作業& snapshot dependency觸發器,這意味着Jenkins會分析模塊和觸發器之間的依賴關係,以構建適當的相關作業。

+0

真棒...... :) –