2010-08-23 11:34:36 來(lái)源:程序員
持續(xù)集成作為一種敏捷軟件開(kāi)發(fā)實(shí)踐,已經(jīng)被越來(lái)越多的開(kāi)發(fā)者所接受。持續(xù)集成倡導(dǎo)開(kāi)發(fā)團(tuán)隊(duì)頻繁地進(jìn)行系統(tǒng)集成——通常一天一次到數(shù)次,每次集成都能被自動(dòng)編譯和測(cè)試驗(yàn)證,從而能在最短的時(shí)間內(nèi)發(fā)現(xiàn)問(wèn)題,縮短開(kāi)發(fā)周期,提高軟件質(zhì)量。
筆者面對(duì)的是具有十多年開(kāi)發(fā)維護(hù)歷史,的5個(gè)相互依賴產(chǎn)品,每個(gè)產(chǎn)品均超過(guò)百萬(wàn)行代碼的復(fù)雜系統(tǒng)。集成本身涉及很多煩瑣的手工操作,很難實(shí)現(xiàn)過(guò)程自動(dòng)化。在實(shí)施過(guò)程中,受困于軟件系統(tǒng)的歷史遺留問(wèn)題,而通常市面上的持續(xù)集成工具又不能滿足系統(tǒng)的需求,讓我們不得不著手開(kāi)發(fā)自己的集成系統(tǒng)。經(jīng)過(guò)近一年的持續(xù)努力,終于完成了系統(tǒng)集成的自動(dòng)化,將集成頻度從數(shù)周甚至數(shù)月集成提高到日集成,大大提高了生產(chǎn)效率。
集成的困境
OSS系統(tǒng)是我們一個(gè)具有十多年生命歷程的復(fù)雜系統(tǒng),多年來(lái)一直處于不斷的開(kāi)發(fā)和維護(hù)中,子產(chǎn)品的數(shù)目和系統(tǒng)的代碼量也隨著時(shí)間日益增長(zhǎng),集成的周期、發(fā)布周期也隨之逐漸增長(zhǎng)。OSS系統(tǒng)包含有5個(gè)需要集成的產(chǎn)品:ComLIB 、DB-Com、Data Broker、DataGen、DataAgent,每個(gè)產(chǎn)品均有上百萬(wàn)行源代碼和龐大的測(cè)試用例,產(chǎn)品可以單獨(dú)構(gòu)建,但運(yùn)行時(shí)有相互依賴關(guān)系。OSS產(chǎn)品棧如圖1所示,上層產(chǎn)品對(duì)下層產(chǎn)品具有依賴,部分產(chǎn)品棧亦可以組成一個(gè)應(yīng)用系統(tǒng),如DataGen+CommonLib可以組成一個(gè)應(yīng)用系統(tǒng),DataBroker+ DBCom+CommonLib也可以組成一個(gè)應(yīng)用系統(tǒng)。

圖1 OSS產(chǎn)品棧
同時(shí),OSS的每個(gè)產(chǎn)品又包含不同的發(fā)布單元,用于運(yùn)行于不同功能服務(wù)器上:Control Server、SITE、PAP、Workstation、Application Server和不同的操作系統(tǒng)環(huán)境中,產(chǎn)品在不同的服務(wù)器上安裝單元如表1所示。

表1 OSS產(chǎn)品在不同服務(wù)器上的安裝單元
傳統(tǒng)手工集成需要完成如下事情:
1.從代碼庫(kù)取出產(chǎn)品棧中每個(gè)產(chǎn)品需要集成的代碼;
2.在Build server上對(duì)每個(gè)產(chǎn)品進(jìn)行編譯,單元測(cè)試(每個(gè)產(chǎn)品編譯需要2~3小時(shí),單元測(cè)試需要4~5小時(shí));
3.在Package server上對(duì)編譯好的產(chǎn)品進(jìn)行打包(每個(gè)產(chǎn)品打包需要約1小時(shí));
4.在Lab中卸載舊的產(chǎn)品;
5.在不同的服務(wù)器上(Control Server、Site、Workstation、APP Server)安裝產(chǎn)品中相應(yīng)的產(chǎn)品的相應(yīng)部件,需要按照產(chǎn)品依賴關(guān)系進(jìn)行安裝 (2~3小時(shí));
6.檢查每個(gè)產(chǎn)品的每個(gè)部件在Lab環(huán)境中的安裝情況,確認(rèn)安裝成功;
7.運(yùn)行功能測(cè)試腳本做回歸測(cè)試(10~12小時(shí));
8.檢查測(cè)試結(jié)果(3小時(shí));
9.對(duì)系統(tǒng)進(jìn)行卸載測(cè)試,檢查卸載結(jié)果 (1~2小時(shí))。
如果在此過(guò)程中,一旦遇到問(wèn)題,則需要花費(fèi)更長(zhǎng)的時(shí)間。如此昂貴的集成代價(jià)使得OSS系統(tǒng)通常數(shù)周甚至更長(zhǎng)的時(shí)間才艱難地進(jìn)行一次集成。而自動(dòng)化還要解決多產(chǎn)品、多平臺(tái)、多種安裝和運(yùn)行環(huán)境、多個(gè)操作需要人工干預(yù)的難題。
集成目標(biāo)
持續(xù)集成需與自動(dòng)化結(jié)合才能發(fā)揮其威力,為給OSS系統(tǒng)瘦身,我們?cè)O(shè)定了如下自動(dòng)化持續(xù)集成目標(biāo):
1.在集成服務(wù)器上配置cron job,每天晚上進(jìn)行集成,第二天早上發(fā)布結(jié)果;
2.在集成服務(wù)器上配置集成方案,指定所需要的產(chǎn)品棧或子棧,指定所需產(chǎn)品的版本或分支,指定需要進(jìn)行卸載、安裝測(cè)試,功能測(cè)試的Lab以及Lab里的服務(wù)器;
3.只需修改少量參數(shù)配置,即可以實(shí)現(xiàn)不同的持續(xù)集成方案。
免責(zé)聲明:本網(wǎng)站(http://www.www.gypb.net/)內(nèi)容主要來(lái)自原創(chuàng)、合作媒體供稿和第三方投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
本網(wǎng)站刊載的所有內(nèi)容(包括但不僅限文字、圖片、LOGO、音頻、視頻、軟件、程序等)版權(quán)歸原作者所有。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),請(qǐng)及時(shí)通知本站,予以刪除。
