2010-05-06 82 views
3

目前,我的團隊正在考慮將我們的單一CI構建過程分解爲更簡化的多階段過程,以加快基本構建反饋並隔離不同的ci問題。我們的想法是讓每個階段都存在於Hudson中,作爲具有正確maven目標或maven插件執行的不同構建,然後使用Hudson的後構建鉤子將它們鏈接在一起。構建流水線並與Maven和Hudson持續集成

但是據我所知,作爲構建工具的Maven強制執行的任何生命週期階段都會自動構建每個前面的生命週期階段。這提出了許多問題,其中最重要的是Maven正在重新構建每個不同調用的構建資源,而不是使用前一階段的構建資源。這不僅打破了構建生命週期的一致性,而且造成了更多不必要的處理開銷。

有沒有辦法使用Maven完成使用CI的流水線操作?假設存在,是否有辦法讓Hudson知道下一次使用前一階段構建的資源?

回答

0

除了通過外部存儲庫(例如結構化文件共享)共享構建工件的一般方法之外,您可以歸檔Hudson板載選項所需的構件或使用Clone Workspace Plugin。看看問題HUDSON-682,讓我們來創建這個插件。

0

我已經在CI中創建了一個Maven構建的流水線(儘管使用Bamboo而不是Hudson)。我使用GMaven來運行創建一次性使用的腳本pom.xml。所生成的pom.xml包含:

  • <property>對於在階段1
  • <dependency>用於將在階段2需要每個依賴性(即,測試類路徑)定義的每個屬性。關鍵是要使用scope=system幷包含前一階段構建的工件的路徑。

然後將它與構建的工件一起壓縮並傳遞到階段2.您可以輕鬆地將其轉換爲Maven插件,特別是如果您使用GMaven。

我寫了一篇關於構建管道here的博客,但沒有太多有關Maven部分的細節。