前言
??什么是持續(xù)集成,為什么要持續(xù)集成窗悯?本文對持續(xù)集成前后兩種開發(fā)實踐做了對比分析吞瞪,從而直觀的感受到持續(xù)集成的好處。
傳統(tǒng)的開發(fā)模式
存在的問題
1.Bug總是在最后才出現(xiàn)养匈。
2.越到項目后期,問題越難解決都伪。
3.軟件交付時機無法保障呕乎。
4.程序經常需要變更。
某些項目中陨晶,程序會經常需要變更猬仁,特別是敏捷開發(fā)實踐者。
5.無效的等待變多先誉。
開發(fā)在等待集成其他人的模塊湿刽,測試人員在等待開發(fā)修復Bug,產品經理在等待新版本上線給客戶做演示谆膳,項目經理在等待其他人提交代碼叭爱。
6.用戶的滿足度低。
持續(xù)集成
什么是持續(xù)集成
??在軟件工程中漱病,持續(xù)集成(CI)是指將所有開發(fā)者的工作副本每天多次合并到主干的做法买雾。Grady Booch 在1991年的 Booch method 中首次命名并提出了 CI 的概念把曼,盡管在當時他并不主張每天多次集成。而 XP(Extreme programming漓穿,極限編程)采用了 CI 的概念嗤军,并提倡每天不止一次集成。
持續(xù)集成服務器
??持續(xù)集成服務器就是能夠采用自動化的手段晃危,來解放人的雙手叙赚,實現(xiàn)項目持續(xù)集成的工具。與之配套的軟件有TeamCity僚饭、Jenkins震叮、Go等。
持續(xù)集成的工作模式
持續(xù)集成的好處
1.解放了重復性勞動鳍鸵。
自動化部署工作可以解放集成苇瓣、測試、部署等重復性勞動偿乖,而機器集成的頻率明顯比手工高很多击罪。
2.更快地修復問題。
持續(xù)集成更早的獲取變更贪薪,更早的進入測試媳禁,更早的發(fā)現(xiàn)問題,解決問題的成本顯著下降画切。
3.更快的交付成果竣稽。
更早發(fā)現(xiàn)錯誤減少解決錯誤所需的工作量。集成服務器在構建環(huán)節(jié)發(fā)現(xiàn)錯誤可以及時通知開發(fā)人員修復霍弹。集成服務器在部署環(huán)節(jié)發(fā)現(xiàn)錯誤可以回退到上一版本丧枪,服務器始終有一個可用的版本。
4.減少手工的錯誤庞萍。
在重復性動作上,人容易犯錯忘闻,而機器犯錯的幾率幾乎為零钝计。
5.減少了等待時間。
縮短了從開發(fā)齐佳、集成私恬、測試、部署各個環(huán)節(jié)的時間炼吴,從而也就縮短了中間可以出現(xiàn)的等待時機本鸣。持續(xù)集成,意味著開發(fā)硅蹦、集成荣德、測試闷煤、部署也得以持續(xù)。
6.更高的產品質量涮瞻。
集成服務器往往提供代碼質量檢測等功能鲤拿,對不規(guī)范或有錯誤的地方會進行標致,也可以設置郵件和短信等進行警告署咽。
持續(xù)集成的最佳實踐
1.頻繁檢出代碼近顷。
有時候代碼沖突無可避免,頻繁檢出代碼宁否,可以讓本地的副本和代碼庫中的版本最小差異化窒升。
2.頻繁提交代碼。
與1的原理類似慕匠,頻繁提交代碼饱须,可以讓其他人檢出副本和代碼庫中的版本最小差異化。
3.減少分支絮重,回歸主干冤寿。
多個分支并行應及早將變更集成到主干中,避免同時維護軟件的多個版本青伤。
4.使用自動化構建督怜。
可以使用Maven、Ant等來實現(xiàn)自動化構建狠角,可以在構建過程中實現(xiàn)自動化測試号杠。前提是有寫單元測試用例。
5.提交測試丰歌。
在提交工作之前姨蟋,每個程序員必須本地集成所有代碼,做一個完整的構建和運行立帖,并通過所有的單元測試眼溶,這樣能減少集成測試在集成服務器上構建失敗的風險。
6.當前狀態(tài)對每個人都可見晓勇。
集成服務器在持續(xù)集成過程中發(fā)現(xiàn)問題應及時發(fā)送警告給相關的干系人堂飞。