更新時(shí)間:2019-02-13 10:48 來源:動(dòng)力節(jié)點(diǎn) 瀏覽10350次
隨著軟件開發(fā)復(fù)雜度的不斷提高,團(tuán)隊(duì)開發(fā)成員間如何更好地協(xié)同工作以確保軟件開發(fā)的質(zhì)量已逐步成為開發(fā)過程中不可回避的問題。尤其是近些年來,敏捷(Agile) 在軟件工程領(lǐng)域被大量討論,如何能在不斷變化的需求中快速適應(yīng)和保證軟件的質(zhì)量顯得尤為重要。
持續(xù)集成正是針對這一類問題的一種軟件開發(fā)實(shí)踐,它倡導(dǎo)團(tuán)隊(duì)開發(fā)成員必須經(jīng)常集成他們的工作,甚至每天都可能進(jìn)行多次集成,而每次的集成都是通過自動(dòng)化的構(gòu)建來驗(yàn)證,包括自動(dòng)編譯、發(fā)布和測試,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤,讓團(tuán)隊(duì)能夠更快的開發(fā)內(nèi)聚的軟件。
持續(xù)集成的核心價(jià)值在于:
持續(xù)集成中的任何一個(gè)環(huán)節(jié)都是自動(dòng)完成的,無需太多的人工干預(yù),有利于減少重復(fù)過程以節(jié)省時(shí)間、費(fèi)用和工作量;
持續(xù)集成保障了每個(gè)時(shí)間點(diǎn)上團(tuán)隊(duì)成員提交的代碼是能成功集成的,即任何時(shí)間點(diǎn)都能第一時(shí)間發(fā)現(xiàn)軟件的集成問題,使任意時(shí)間發(fā)布可部署的軟件成為可能;
持續(xù)集成還能利于軟件本身的發(fā)展趨勢,在需求不明確或頻繁變更需求的情景中尤其重要,持續(xù)集成的質(zhì)量能幫助團(tuán)隊(duì)進(jìn)行有效地決策,同時(shí)建立團(tuán)隊(duì)對開發(fā)產(chǎn)品的信心。
業(yè)界普遍認(rèn)同的持續(xù)集成的原則包括:
1)需要版本控制軟件保障團(tuán)隊(duì)成員提交的代碼不會(huì)導(dǎo)致集成失敗,常用的版本控制軟件有 svn、git 等;
2)開發(fā)人員必須及時(shí)向版本控制庫中提交代碼,也必須經(jīng)常性地從版本控制庫中更新代碼到本地;
3)需要有專門的集成服務(wù)器來執(zhí)行集成構(gòu)建,根據(jù)項(xiàng)目的具體情況,集成構(gòu)建可以在軟件被修改時(shí)直接觸發(fā),也可以定時(shí)啟動(dòng)觸發(fā),如每半個(gè)小時(shí)構(gòu)建一次;
4)必須保證構(gòu)建的成功,如果構(gòu)建失敗,修復(fù)構(gòu)建過程中的錯(cuò)誤是優(yōu)先級(jí)最高的工作,一旦修復(fù),需要手動(dòng)啟動(dòng)一次構(gòu)建。
由此可見,一個(gè)完整的構(gòu)建系統(tǒng)必須包括:
一個(gè)自動(dòng)構(gòu)建過程,包括自動(dòng)編譯、分發(fā)、部署和測試等。
一個(gè)代碼存儲(chǔ)庫,即需要版本控制軟件來保障代碼的可維護(hù)性,同時(shí)作為構(gòu)建過程的素材庫。
一個(gè)持續(xù)集成服務(wù)器,Jenkins 就是一個(gè)配置簡單且使用方便的持續(xù)集成服務(wù)器。
Jenkins 簡介
Jenkins 是一個(gè)開源項(xiàng)目,提供了一種易于使用的持續(xù)集成系統(tǒng),使開發(fā)者從繁雜的集成中解脫出來,專注于更為重要的業(yè)務(wù)邏輯實(shí)現(xiàn)上,同時(shí) Jenkins 能實(shí)施監(jiān)控集成中存在的錯(cuò)誤,提供詳細(xì)的日志文件和提醒功能,還能以圖表的形式形象地展示項(xiàng)目構(gòu)建的趨勢和穩(wěn)定性。
Jenkins,原名Hudson,2011年改為Jenkins,它是一個(gè)開源的實(shí)現(xiàn)持續(xù)集成的軟件工具。
Jenkins特點(diǎn)
易安裝:僅僅一個(gè) java -jar jenkins.war,從官網(wǎng)下載該文件后,直接運(yùn)行,無需額外的安裝,更無需安裝數(shù)據(jù)庫;
易配置:提供友好的GUI配置界面;
變更支持:Jenkins能從代碼倉庫(svn/git)中獲取并產(chǎn)生代碼更新列表并輸出到編譯輸出信息中;
支持永久鏈接:用戶是通過web來訪問Jenkins的,而這些web頁面的鏈接地址都是永久鏈接地址,因此,你可以在各種文檔中直接使用該鏈接;
集成E-Mail/RSS/IM:當(dāng)完成一次集成時(shí),可通過這些工具實(shí)時(shí)告訴你集成結(jié)果(據(jù)我所知,構(gòu)建一次集成需要花費(fèi)一定時(shí)間,有了這個(gè)功能,你就可以在等待結(jié)果過程中,干別的事情);
JUnit/TestNG測試報(bào)告:也就是用以圖表等形式提供詳細(xì)的測試報(bào)表功能;
支持分布式構(gòu)建:Jenkins可以把集成構(gòu)建等工作分發(fā)到多臺(tái)計(jì)算機(jī)中完成;
文件指紋信息:Jenkins會(huì)保存哪次集成構(gòu)建產(chǎn)生了哪些jars文件,哪一次集成構(gòu)建使用了哪個(gè)版本的jars文件等構(gòu)建記錄;
支持第三方插件:使得 Jenkins 變得越來越強(qiáng)大;
其它集成工具
其它比較著名的持續(xù)集成工具有:CruiseControl,TeamCity,Continuum等。
相關(guān)閱讀
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743