1. 程式人生 > >「Continuous_integration, CI」為什麽要持續集成?

「Continuous_integration, CI」為什麽要持續集成?

ati 運行 單元 inf 分支 method 項目 敏捷 jenkins

前言  

什麽是持續集成,為什麽要持續集成?本文對持續集成前後兩種開發實踐做了對比分析,從而直觀的感受到持續集成的好處。

在說持續集成之前,先說一下傳統的開發模式:

傳統模式:

傳統模式過程如下:

技術分享圖片

傳統的開發模式存在的問題:

1.Bug總是在最後才出現。

2.越到項目後期,問題越難解決。

3.軟件交付時機無法保障。

4.程序經常需要變更。
某些項目中,程序會經常需要變更,特別是敏捷開發實踐者。

5.無效的等待變多。
開發在等待集成其他人的模塊,測試人員在等待開發修復Bug,產品經理在等待新版本上線給客戶做演示,項目經理在等待其他人提交代碼。

6.用戶的滿足度低。

持續集成

什麽是持續集成? 

在軟件工程中,持續集成(CI)是指將所有開發者的工作副本每天多次合並到主幹的做法。Grady Booch 在1991年的 Booch method 中首次命名並提出了 CI 的概念,盡管在當時他並不主張每天多次集成。而 XP(Extreme programming,極限編程)采用了 CI 的概念,並提倡每天不止一次集成。

持續集成服務器:
持續集成服務器就是能夠采用自動化的手段,來解放人的雙手,實現項目持續集成的工具。與之配套的軟件有TeamCity、Jenkins、Go等。

持續集成的工作模式:

技術分享圖片

持續集成的好處:

1.解放了重復性勞動。

自動化部署工作可以解放集成、測試、部署等重復性勞動,而機器集成的頻率明顯比手工高很多。

2.更快地修復問題。
持續集成更早的獲取變更,更早的進入測試,更早的發現問題,解決問題的成本顯著下降。

3.更快的交付成果。
更早發現錯誤減少解決錯誤所需的工作量。集成服務器在構建環節發現錯誤可以及時通知開發人員修復。集成服務器在部署環節發現錯誤可以回退到上一版本,服務器始終有一個可用的版本。

4.減少手工的錯誤。
在重復性動作上,人容易犯錯,而機器犯錯的幾率幾乎為零。

5.減少了等待時間。
縮短了從開發、集成、測試、部署各個環節的時間,從而也就縮短了中間可以出現的等待時機。持續集成,意味著開發、集成、測試、部署也得以持續。

6.更高的產品質量。
集成服務器往往提供代碼質量檢測等功能,對不規範或有錯誤的地方會進行標致,也可以設置郵件和短信等進行警告。


持續集成的最佳實踐:
1.頻繁檢出代碼。
有時候代碼沖突無可避免,頻繁檢出代碼,可以讓本地的副本和代碼庫中的版本最小差異化。


2.頻繁提交代碼。
與1的原理類似,頻繁提交代碼,可以讓其他人檢出副本和代碼庫中的版本最小差異化。


3.減少分支,回歸主幹。
多個分支並行應及早將變更集成到主幹中,避免同時維護軟件的多個版本。


4.使用自動化構建。
可以使用Maven、Ant等來實現自動化構建,可以在構建過程中實現自動化測試。前提是有寫單元測試用例。


5.提交測試。
在提交工作之前,每個程序員必須本地集成所有代碼,做一個完整的構建和運行,並通過所有的單元測試,這樣能減少集成測試在集成服務器上構建失敗的風險。


6.當前狀態對每個人都可見。
集成服務器在持續集成過程中發現問題應及時發送警告給相關的幹系人。

「Continuous_integration, CI」為什麽要持續集成?