持續整合系統簡介
持續整合系統是指持續地編譯、測試、檢查和部署原始碼的系統。
Martin Fowler 對 持續整合是這樣定義的 :
持續整合是一種軟體開發實踐,團隊開發成員經常整合它們的工作,通常每個成員每天可 能會發生多次整合。每次整合都通過自動化的構建(包括編譯、發布、自動化測試)來驗證,從而儘快地發現整合錯誤。這 個過程可以大大減少整合的問題,從而讓團隊能夠更快的開發內聚的軟體。
持續整合有以下幾個特點和要求:
有統一的原始碼庫。
開發人員基於同一個原始碼庫進行開發是進行持續整合的一個前提。為了讓持續整合系統正確地發揮作用,需要一個源 代碼管理系統,比如 Subversion。
實現了軟體構建和測試自動化。
使用一些持續整合軟體,如 Hudson,自動完成軟體的構建和測試。
每次代碼遞交後都會在持續整合伺服器上觸發一次構建。
在開發過程中,如果開發人員本地的編譯環境存在差異,就可能會出現其中一個開發人員的修改在他本地驗證通過,但 提交到版本庫後,另外一個開發人員下載到他自己的機器上卻無法編譯通過。為了避免出現這種情況,需要建立了專門的持 續整合服務器,統一編譯環境的配置,開發人員的每一次提交都會在持續整合伺服器上進行整合和測試。這樣就保證開發人 員從版本庫中擷取到的版本完全可以在本地的機器上面可以順利編譯。
測試環境要和產品發布的實際環境一致。
持續整合的目的就是為了快速整合並驗證問題,然後發布。為了保證持續整合的產品最後可以順利發布,持續整合的測 試環境必須和產品實際的運行環境保持一致,這樣使用者才能拿到真正通過測試檢驗的產品。
持續整合有下列的好處和優點:
減少重複過程,提高工作效率。
從代碼提交到軟體發布的過程包括代碼構建、測試、部署等環節,每個環節對於開發工程師而言是費時費力而又沒有產 出的過程,並且每次代碼的修改都會重複這個過程。持續整合系統可以將這些重複的動作都變成自動化的,無需太多人工幹 預,可以將項目成員從這種重複勞動中解放出來從而投入到其他更有價值的工作中去。
提高修複問題的品質,可以隨時產生可交付的品質可靠的軟體,減少項目風險。
我們利用持續整合,可以經常對源碼進行修改,並將這些修改及時和其他代碼進行整合。一旦發現問題,會在第一時間 由開發人員解決,問題會很快得到修複。這種一旦有問題出現,立即修複的模式,由於沒有很多問題疊加在一起,修複問題 會更加容易,修複的品質也更高。並且可以隨時產生可交付的品質可靠的軟體。持續整合一天中可以進行多次的整合並做相 應的測試,有利於提前及時地發現缺陷,將問題在項目的前期解決,避免了將問題遺留到項目後期,導致不能及時交付軟體 的風險。
如果沒有持續整合,這些問題可能要累積到交付前的整合測試的時候才發現,這時,很多問題交織在一起,使得修複問 題更困難,而急於修複這些缺陷又有可能引入新的缺陷,使得修複的品質降低,有可能會導致延遲發布產品,最終可能導致 項目失敗。