前言
??什么是持續(xù)集成,為什么要持續(xù)集成?本文對(duì)持續(xù)集成前后兩種開(kāi)發(fā)實(shí)踐做了對(duì)比分析,從而直觀的感受到持續(xù)集成的好處。
傳統(tǒng)的開(kāi)發(fā)模式

存在的問(wèn)題
1.Bug總是在最后才出現(xiàn)。
2.越到項(xiàng)目后期,問(wèn)題越難解決。
3.軟件交付時(shí)機(jī)無(wú)法保障。
4.程序經(jīng)常需要變更。
某些項(xiàng)目中,程序會(huì)經(jīng)常需要變更,特別是敏捷開(kāi)發(fā)實(shí)踐者。
5.無(wú)效的等待變多。
開(kāi)發(fā)在等待集成其他人的模塊,測(cè)試人員在等待開(kāi)發(fā)修復(fù)Bug,產(chǎn)品經(jīng)理在等待新版本上線給客戶做演示,項(xiàng)目經(jīng)理在等待其他人提交代碼。
6.用戶的滿足度低。
持續(xù)集成
什么是持續(xù)集成
??在軟件工程中,持續(xù)集成(CI)是指將所有開(kāi)發(fā)者的工作副本每天多次合并到主干的做法。Grady Booch 在1991年的 Booch method 中首次命名并提出了 CI 的概念,盡管在當(dāng)時(shí)他并不主張每天多次集成。而 XP(Extreme programming,極限編程)采用了 CI 的概念,并提倡每天不止一次集成。
持續(xù)集成服務(wù)器
??持續(xù)集成服務(wù)器就是能夠采用自動(dòng)化的手段,來(lái)解放人的雙手,實(shí)現(xiàn)項(xiàng)目持續(xù)集成的工具。與之配套的軟件有TeamCity、Jenkins、Go等。
持續(xù)集成的工作模式

持續(xù)集成的好處
1.解放了重復(fù)性勞動(dòng)。
自動(dòng)化部署工作可以解放集成、測(cè)試、部署等重復(fù)性勞動(dòng),而機(jī)器集成的頻率明顯比手工高很多。
2.更快地修復(fù)問(wèn)題。
持續(xù)集成更早的獲取變更,更早的進(jìn)入測(cè)試,更早的發(fā)現(xiàn)問(wèn)題,解決問(wèn)題的成本顯著下降。
3.更快的交付成果。
更早發(fā)現(xiàn)錯(cuò)誤減少解決錯(cuò)誤所需的工作量。集成服務(wù)器在構(gòu)建環(huán)節(jié)發(fā)現(xiàn)錯(cuò)誤可以及時(shí)通知開(kāi)發(fā)人員修復(fù)。集成服務(wù)器在部署環(huán)節(jié)發(fā)現(xiàn)錯(cuò)誤可以回退到上一版本,服務(wù)器始終有一個(gè)可用的版本。
4.減少手工的錯(cuò)誤。
在重復(fù)性動(dòng)作上,人容易犯錯(cuò),而機(jī)器犯錯(cuò)的幾率幾乎為零。
5.減少了等待時(shí)間。
縮短了從開(kāi)發(fā)、集成、測(cè)試、部署各個(gè)環(huán)節(jié)的時(shí)間,從而也就縮短了中間可以出現(xiàn)的等待時(shí)機(jī)。持續(xù)集成,意味著開(kāi)發(fā)、集成、測(cè)試、部署也得以持續(xù)。
6.更高的產(chǎn)品質(zhì)量。
集成服務(wù)器往往提供代碼質(zhì)量檢測(cè)等功能,對(duì)不規(guī)范或有錯(cuò)誤的地方會(huì)進(jìn)行標(biāo)致,也可以設(shè)置郵件和短信等進(jìn)行警告。
持續(xù)集成的最佳實(shí)踐
1.頻繁檢出代碼。
有時(shí)候代碼沖突無(wú)可避免,頻繁檢出代碼,可以讓本地的副本和代碼庫(kù)中的版本最小差異化。
2.頻繁提交代碼。
與1的原理類似,頻繁提交代碼,可以讓其他人檢出副本和代碼庫(kù)中的版本最小差異化。
3.減少分支,回歸主干。
多個(gè)分支并行應(yīng)及早將變更集成到主干中,避免同時(shí)維護(hù)軟件的多個(gè)版本。
4.使用自動(dòng)化構(gòu)建。
可以使用Maven、Ant等來(lái)實(shí)現(xiàn)自動(dòng)化構(gòu)建,可以在構(gòu)建過(guò)程中實(shí)現(xiàn)自動(dòng)化測(cè)試。前提是有寫單元測(cè)試用例。
5.提交測(cè)試。
在提交工作之前,每個(gè)程序員必須本地集成所有代碼,做一個(gè)完整的構(gòu)建和運(yùn)行,并通過(guò)所有的單元測(cè)試,這樣能減少集成測(cè)試在集成服務(wù)器上構(gòu)建失敗的風(fēng)險(xiǎn)。
6.當(dāng)前狀態(tài)對(duì)每個(gè)人都可見(jiàn)。
集成服務(wù)器在持續(xù)集成過(guò)程中發(fā)現(xiàn)問(wèn)題應(yīng)及時(shí)發(fā)送警告給相關(guān)的干系人。