什么是持續(xù)集成
剛開(kāi)始時(shí) 我對(duì)這個(gè)概念很狹隘 以為只要能讓系統(tǒng)自動(dòng)下載代碼然后編譯通過(guò)就叫持續(xù)集成,其實(shí)不然 我們仔細(xì)學(xué)習(xí)下基礎(chǔ)概念。持續(xù)集成(Continuous integration)
集成軟件的過(guò)程不是新問(wèn)題,如果項(xiàng)目開(kāi)發(fā)的規(guī)模比較小,比如一個(gè)人的項(xiàng)目,如果它對(duì)外部系統(tǒng)的依賴很小,那么軟件集成不是問(wèn)題,但是隨著軟件項(xiàng)目復(fù)雜度的增加(即使增加一個(gè)人),就會(huì)對(duì)集成和確保軟件組件能夠在一起工作提出了更多的要求-要早集成,常集成。早集成,頻繁的集成幫助項(xiàng)目在早期發(fā)現(xiàn)項(xiàng)目風(fēng)險(xiǎn)和質(zhì)量問(wèn)題,如果到后期才發(fā)現(xiàn)這些問(wèn)題,解決問(wèn)題代價(jià)很大,很有可能導(dǎo)致項(xiàng)目延期或者項(xiàng)目失敗。
2
定義編輯
大師Martin Fowler對(duì)持續(xù)集成是這樣定義的:持續(xù)集成是一種軟件開(kāi)發(fā)實(shí)踐,即團(tuán)隊(duì)開(kāi)發(fā)成員經(jīng)常集成他們的工作,通常每個(gè)成員每天至少集成一次,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過(guò)自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測(cè)試)來(lái)驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤。許多團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)過(guò)程可以大大減少集成的問(wèn)題,讓團(tuán)隊(duì)能夠更快的開(kāi)發(fā)內(nèi)聚的軟件。
3
價(jià)值編輯

減少風(fēng)險(xiǎn)
一天中進(jìn)行多次的集成,并做了相應(yīng)的測(cè)試,這樣有利于檢查缺陷,了解軟件的健康狀況,減少假定。

減少重復(fù)過(guò)程
減少重復(fù)的過(guò)程可以節(jié)省時(shí)間、費(fèi)用和工作量。說(shuō)起來(lái)簡(jiǎn)單,做起來(lái)難。這些浪費(fèi)時(shí)間的重復(fù)勞動(dòng)可能在我們的項(xiàng)目活動(dòng)的任何一個(gè)環(huán)節(jié)發(fā)生,包括代碼編譯、數(shù)據(jù)庫(kù)集成、測(cè)試、審查、部署及反饋。通過(guò)自動(dòng)化的持續(xù)集成可以將這些重復(fù)的動(dòng)作都變成自動(dòng)化的,無(wú)需太多人工干預(yù),讓人們的時(shí)間更多的投入到動(dòng)腦筋的、更高價(jià)值的事情上。

任何時(shí)間、任何地點(diǎn)生成可部署的軟件
持續(xù)集成可以讓您在任何時(shí)間發(fā)布可以部署的軟件。從外界來(lái)看,這是持續(xù)集成最明顯的好處,我們可以對(duì)改進(jìn)軟件品質(zhì)和減少風(fēng)險(xiǎn)說(shuō)起來(lái)滔滔不絕,但對(duì)于客戶來(lái)說(shuō),可以部署的軟件產(chǎn)品是最實(shí)際的資產(chǎn)。利用持續(xù)集成,您可以經(jīng)常對(duì)源代碼進(jìn)行一些小改動(dòng),并將這些改動(dòng)和其他的代碼進(jìn)行集成。如果出現(xiàn)問(wèn)題,項(xiàng)目成員馬上就會(huì)被通知到,問(wèn)題會(huì)第一時(shí)間被修復(fù)。不采用持續(xù)集成的情況下,這些問(wèn)題有可能到交付前的集成測(cè)試的時(shí)候才發(fā)現(xiàn),有可能會(huì)導(dǎo)致延遲發(fā)布產(chǎn)品,而在急于修復(fù)這些缺陷的時(shí)候又有可能引入新的缺陷,最終可能導(dǎo)致項(xiàng)目失敗。

增強(qiáng)項(xiàng)目的可見(jiàn)性
持續(xù)集成讓我們能夠注意到趨勢(shì)并進(jìn)行有效的決策。如果沒(méi)有真實(shí)或最新的數(shù)據(jù)提供支持,項(xiàng)目就會(huì)遇到麻煩,每個(gè)人都會(huì)提出他最好的猜測(cè)。通常,項(xiàng)目成員通過(guò)手工收集這些信息,增加了負(fù)擔(dān),也很耗時(shí)。持續(xù)集成可以帶來(lái)兩點(diǎn)積極效果:
(1)有效決策:持續(xù)集成系統(tǒng)為項(xiàng)目構(gòu)建狀態(tài)和品質(zhì)指標(biāo)提供了及時(shí)的信息,有些持續(xù)集成系統(tǒng)可以報(bào)告功能完成度和缺陷率。
(2)注意到趨勢(shì):由于經(jīng)常集成,我們可以看到一些趨勢(shì),如構(gòu)建成功或失敗、總體品質(zhì)以及其它的項(xiàng)目信息。

建立團(tuán)隊(duì)對(duì)開(kāi)發(fā)產(chǎn)品的信心
持續(xù)集成可以建立開(kāi)發(fā)團(tuán)隊(duì)對(duì)開(kāi)發(fā)產(chǎn)品的信心,因?yàn)樗麄兦宄闹烂恳淮螛?gòu)建的結(jié)果,他們知道他們對(duì)軟件的改動(dòng)造成了哪些影響,結(jié)果怎么樣。
4
要素編輯
1.統(tǒng)一的代碼庫(kù)
2.自動(dòng)構(gòu)建
3.自動(dòng)測(cè)試
4.每個(gè)人每天都要向代碼庫(kù)主干提交代碼
5.每次代碼遞交后都會(huì)在持續(xù)集成服務(wù)器上觸發(fā)一次構(gòu)建
6.保證快速構(gòu)建
7.模擬生產(chǎn)環(huán)境的自動(dòng)測(cè)試
8.每個(gè)人都可以很容易的獲取最新可執(zhí)行的應(yīng)用程序
9.每個(gè)人都清楚正在發(fā)生的狀況
10.自動(dòng)化的部署
5
原則編輯
2. 開(kāi)發(fā)人員每天至少向版本控制庫(kù)中提交一次代碼。
4. 需要有專門的集成服務(wù)器來(lái)執(zhí)行集成構(gòu)建,每天要執(zhí)行多次構(gòu)建。
5. 每次構(gòu)建都要100%通過(guò)。
6. 每次構(gòu)建都可以生成可發(fā)布的產(chǎn)品。
7. 修復(fù)失敗的構(gòu)建是優(yōu)先級(jí)最高的事情。
以上是百度百科的定義,我個(gè)人理解是,盡量減少人工操作,讓整個(gè)流程自動(dòng)化,減少人工誤操作帶來(lái)的損失,并且可以并行構(gòu)建,例如,我們可以讓CI服務(wù)器,通過(guò)版本控制服務(wù)器自行下載項(xiàng)目的不同版本,然后自行進(jìn)行編譯構(gòu)建,發(fā)布版本到應(yīng)用服務(wù)器上,集成自動(dòng)化測(cè)試腳本進(jìn)行測(cè)試,設(shè)置可以利用腳本來(lái)管理我們的數(shù)據(jù)庫(kù),解放我們的測(cè)試到業(yè)務(wù)的重點(diǎn)上去工作,帶個(gè)整個(gè)項(xiàng)目組等等好處,以上任何環(huán)節(jié)出錯(cuò)都可以發(fā)郵件通知相關(guān)人員去整改。
以上是百度百科的定義,我個(gè)人理解是,盡量減少人工操作,讓整個(gè)流程自動(dòng)化,減少人工誤操作帶來(lái)的損失,并且可以并行構(gòu)建,例如,我們可以讓CI服務(wù)器,通過(guò)版本控制服務(wù)器自行下載項(xiàng)目的不同版本,然后自行進(jìn)行編譯構(gòu)建,發(fā)布版本到應(yīng)用服務(wù)器上,集成自動(dòng)化測(cè)試腳本進(jìn)行測(cè)試,設(shè)置可以利用腳本來(lái)管理我們的數(shù)據(jù)庫(kù),解放我們的測(cè)試到業(yè)務(wù)的重點(diǎn)上去工作,帶個(gè)整個(gè)項(xiàng)目組等等好處,以上任何環(huán)節(jié)出錯(cuò)都可以發(fā)郵件通知相關(guān)人員去整改。
posted on 2014-01-23 21:37 順其自然EVO 閱讀(1893) 評(píng)論(0) 編輯 收藏 所屬分類: 持續(xù)集成