目前我們要進行持續集成的對象是一個有著100人左右的開發團隊,他們開發著一套很龐大的系統。整個開發團隊劃分為多個開發小組進行協同開發,每個開發小組負責2-3個模塊的開發,實際這里的模塊已經相當于一個中小型系統。各模塊所有的類都通過eclipse整體編譯在一起,直接放置在WEB-INF/classes下。本地是無法啟動整個系統的,需要耗費大量的資源。
二、碰到的問題
在了解具體情況之前,我們最初的想法是為整個產品做一個持續集成,但是很快就發現這一想法存在很多的問題:
1、整個產品每次構建的時間會很長,這個時間包括代碼的編譯、啟動Weblogic,完成自動化測試,同時對服務器的硬件要求非常高
2、因為構建時間長,所以如果本地構建通過后再提交會嚴重影響開發效率,況且本地的硬件條件很可能啟動不了
3、如果本地不構建提交,則由于開發人數眾多,構建會非常不穩定,會經常處于失敗狀態。而構建失敗會導致后續提交的阻塞。
4、作為一個100人的開發團隊,代碼提交會引發頻繁的服務器構建,服務器無法負擔。
同時作為客戶,他們有這樣一種想法:敏捷開發是好的,但是不適合于大的項目和大的團隊。
最重要的問題集中在兩個方面:
1、啟動整個產品過于重量級(不包括自動化測試的情況下已經如此)
2、如何不影響開發人員的頻繁提交
三、我們的想法
我們現在的想法是做多階段的持續集成(multi-stage CI)
可以參考這里http://www.ddj.com/development-tools/212201506
具體而言:
1、各個開發小組內做小組內的持續集成
2、開發小組間集成做整個產品的持續集成

大概:
1、每個開發小組一個分支,整個產品一條主線
2、在小組分支上搭建持續集成環境,小組內的開發向該分支上提交,各個小組可以并發開發,互不影響
3、小組完成一個完整的功能后,從主線更新合并代碼,本地構建通過,提交,觸發整個產品的持續集成
為使小組內持續集成構建加快,小組內盡量劃分清楚對其他模塊的依賴,不必要的模塊(這里的模塊包括基礎模塊,例如工作流模塊)不必加載。
同時推薦輕量級的web服務器例如Tomcat來完成小組內的測試環境。需要啟動weblogic的情況或功能依賴過多的情況下,建議在產品持續集成時進行測試。
同時保留原有的啟動單獨測試服務器進行手工測試的習慣。
http://www.aygfsteel.com/ronghao 榮浩原創,轉載請注明出處:)