2012-09-11 98 views
1

第一次設置Jenkins CI系統時,我想知道如何處理快照依賴關係和本地Maven存儲庫。快照依賴關係的持續集成策略(與Jenkins)

我們有一個具有依賴項Y的工件X. Jenkins被配置爲每次Y有一個提交時構建X.

策略A(工作空間Maven倉庫):
的本地倉庫被配置爲 「本地到工作區」。這意味着每個構建的作業都有自己的存儲庫。 Y提交會觸發構建(「mvn clean install」),但由於構建版本X和版本庫Y是隔離的,所以X使用最後的版本Y,而不是最後一次提交。
使用此策略似乎很有用,可以檢測是否還部署了所有依賴關係,但它不會檢測到集成問題(中斷Y提交中斷X)。

戰略B(共用Maven倉庫):
詹金斯使用公共的本地倉庫。 (斷開的)Y快照的提交觸發使用當前Y快照的X的構建,並且檢測到集成問題。缺點是,這不會檢測是否所有構建依賴項都部署到中央快照儲存庫(因爲CI系統確實已將它們全部安裝在本地儲存庫中)。

有沒有一種結合了A和B優點的策略?

回答

2

我們結束了使用戰略C此:

策略C(讓詹金斯部署):
每個職業都有它的本地資源庫的本地工作區像戰略A.但不是默認的「乾淨安裝」目標,Jenkins被配置爲在每個作業上執行「-U clean deploy」。因此,如果Y被破壞並提交,Jenkins將構建它並將其部署到中央快照存儲庫。 Jenkins檢測到依賴關係Y的構建,並用最新的Y快照構建X.
對於這個策略很有用 - 至少在Maven 3中 - 在中央快照庫上運行一個自動清理工作,因爲會有很多時間戳快照。