持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru

持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru

ID:30459028

大小:87.71 KB

頁數(shù):13頁

時間:2018-12-30

持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru_第1頁
持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru_第2頁
持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru_第3頁
持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru_第4頁
持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru_第5頁
資源描述:

《持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在cru》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、持續(xù)集成也需要重構(gòu)持續(xù)集成實踐在Cruise閱讀:87評論:0作者:iTech發(fā)表于2010-05-2816:04原文鏈接轉(zhuǎn)自:1前言持續(xù)集成是極限編程十二實踐之一(1999年KentBeck編寫的《解析極限編程》),最初被使用極限編程方法的開發(fā)人員所推捧,并在過去的幾年中得到廣泛應(yīng)用,成為業(yè)界廣為人知的軟件開發(fā)實踐。該實踐用于解決軟件開發(fā)過程中一個具體且重要的問題,即"確保當某個開發(fā)人員完成新的功能或修改代碼后,整個軟件仍舊能正常工作。"然而,持續(xù)集成并非像大多數(shù)人想像的那樣,首次部署好持續(xù)集成環(huán)境后就大功告成,一勞永逸了。恰恰相反,它與你項目

2、中的其它產(chǎn)品代碼一樣,需要改進與重構(gòu),否則,就會使你進入一種"持續(xù)鬧心"的狀態(tài),甚至可能讓你覺得這件事根本不應(yīng)該做,如何解決這一問題呢?對"持續(xù)集成"應(yīng)用"Retrospective"和"重構(gòu)"。本文將結(jié)合Cruise團隊一年多的實際歷程,講述持續(xù)集成實踐在軟件開發(fā)過程中的演進。友情提示:請讀者在閱讀本文時,注重文中所述的思考過程與"持續(xù)集成"的重構(gòu)方式,而非產(chǎn)品本身。2基本持續(xù)集成--萬里長征第一步實際問題:我們需要一個持續(xù)集成環(huán)境為什么要做持續(xù)集成不在本文討論之內(nèi)。理論基礎(chǔ)持續(xù)集成基于這樣一個假設(shè):如果兩次代碼集成的間隔時間越長,最終集成時痛

3、苦的經(jīng)歷就會越多。而其目標有兩個:一是"頻繁集成",二是"反映代碼質(zhì)量"。為了做到"頻繁集成",就要求任何開發(fā)人員在每次向中央代碼庫提交代碼時,就將所有代碼進行編譯,打包,部署,以確保能夠產(chǎn)生交付物。然而,"頻繁集成"僅僅證明了每次提交是否可以得到交付物,而我們真正需要知道的是"這個交付物的質(zhì)量如何"。如果交付物有問題,引起問題的代碼則要么被回滾,要么被修正。當然,這樣的任務(wù)也可以通過手工來完成,但手工工作的特點就是易出錯且耗時,所以需要將其自動化。為了做好"持續(xù)集成實踐",寫一個自動化構(gòu)建腳本來自動構(gòu)建并運行一些自動化測試套件還是必要的。這種傳

4、統(tǒng)的持續(xù)集成方式常被固化于開發(fā)環(huán)節(jié),即:開發(fā)人員安裝一個專門的持續(xù)集成服務(wù)器來自動化運行這些單元測試,然后通過各種各樣自動生成的測試結(jié)果分析代碼的質(zhì)量,這也是CruiseControl誕生的原因。解決方案最初,我們的代碼并不多,自動化腳本比較簡單,在一臺機器上運行所有的測試也僅需要幾分鐘,該構(gòu)建套件的運行順序是:CheckStyle-Compile-UnitTest-FunctionTest-Report。示意如下:projectname="Cruise"default="all"basedir="."targetname="all"depend

5、s="checkStyle,Compile,UnitTest,FunctionTest,Report"/targetname="checkStyle"./targettargetname="Compile"./targettargetname="UnitTest"depends="Compile"./targettargetname="FunctionTest"depends="Compile"./targettargetname="Report"depends="FunctionTest"./target/project這也是大部分軟件團隊進行

6、持續(xù)集成的起點。目前,有很多種持續(xù)集成工具,其中不乏開源產(chǎn)品,如CruiseControl家族。項目伊始,我們使用CruiseControl建立了自己的持續(xù)集成服務(wù)器,整個項目的持續(xù)集成基礎(chǔ)結(jié)構(gòu)如圖所示:圖1基礎(chǔ)持續(xù)集成模式注:得到快速反饋是開發(fā)好產(chǎn)品的關(guān)鍵。因此,我們自己就做了Cruise的第一個用戶,首先解決自己的持續(xù)集成需求。項目開始后僅幾周,我們的產(chǎn)品Cruise已經(jīng)基本滿足自身團隊持續(xù)集成的需求,因此,我們就將CruiseControl替換成Cruise,但持續(xù)集成基本結(jié)構(gòu)并沒有變化。3階段化持續(xù)集成--平衡的藝術(shù)實際問題:測試越來越慢

7、,開發(fā)人員等得不耐煩。隨著時間的推移,Cruise每次做持續(xù)集成的運行時間很快就超過了15分鐘(開發(fā)人員能夠忍受的最大限度)。然而,為了保證Cruise支持大多數(shù)瀏覽器,我們還打算增加Cruise運行于不同操作系統(tǒng)及不同瀏覽器的功能測試。理論基礎(chǔ)一般來說,測試代碼越多,越能夠正確反映代碼的質(zhì)量[前提:你寫的測試是有意義的:)]。所以在整個生命周期中,大家都試圖增加更多的測試代碼。然而,越多的測試代碼也意味著更長的運行時間,更慢的反饋速度。因此,我們不得不在"反饋時間"與"判斷質(zhì)量準確性"兩者之間找到一種平衡,而"階段化持續(xù)集成"就有了用武之地。所

8、謂的"階段化持續(xù)集成"是指為不同的構(gòu)建測試套件(以下稱構(gòu)建計劃)建立不同的持續(xù)集成循環(huán)周期,由于單元測試運行時間短,反饋較快,所以可以頻

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。