持續集成 CI 關鍵實踐精華
現代IT系統的開發多是由一個數人組成的開發團隊共同完成,在多人協同開發的情況,如何進行有效的代碼集成將直接影響到項目的進度、效率、質量。
什麼是持續集成
持續集成的一個要點是頻繁的進行代碼集成,並且快速解決集成代碼中的錯誤。以下是持續集成的一個典型流程:
關鍵實踐
- 維護統一的代碼庫
使用代碼庫最常犯的錯誤是只把代碼儲存在代碼中,而忽略了測試用例腳本、配置文件、資料庫schema文件、安裝腳本、以及第三方庫。什麼應該提交至代碼庫的基本原則是:當我們要部署一台剛初始化的伺服器時,可以通過代碼庫中的內容完成部署。
- 自動化構建
構建的過程盡量優化,以縮短構建的時間。例如:一個小的變更,可能不需要對整個項目進行全盤的構建,而只需要對其修改、影響部分進行構建即可,從而減少不必要的構建時間。
- 確保自己的代碼經過測試
確保代碼經過自測試的最佳實踐是通過自動化測試。代碼在提交前通過已定義的測試集進行測試,以保障基礎的質量水平。
- 每天提交代碼
集成其實是程序員間的一種交流方式。頻繁的代碼集成,有助於程序員間進行互相了解,程序員可以更早的發現代碼間的衝突,從而可以今早解決主幹代碼的問題,保證主幹代碼的健康。否則,問題日積月累,積重難返。
- 代碼提交成功以提交後構建成功為準
這部分有兩類型典型的錯誤用法。一種是程序員提交代碼後,不需要參考集成構建的結果,則認為集成已經成功了;另一種是代碼的集成構建通常在一天的晚上進行,而不是代碼每次提交後進行。這兩種做法的主要問題是代碼提交後,若不經過構建,無法發現潛在的問題。即使是每天晚上進行集成構建,當發現問題時,已經很難分辨問題的責任人。因此,這部分的最佳實踐應該是代碼提交後,立即執行構建。若出現問題,程序員即時進行處理。當構建成功後,才認為代碼提交成功。
- 立即解決代碼集成出現的錯誤
當集成構建出現問題時,需要立即解決問題。否則問題越積越多,複雜性越來越大,則積重難返。
- 加快構建的速度
構建的速度將直接影響開發的效率。但是在構建的過程中,如果涉及到大量的外部系統、資料庫調用、測試集,這都會降低構建的效率。但是,如果通過stub、減少測試集等方法來提高構建效率,這又會影響構建的質量水平。因此,為了提高構建效率,一種比較好的實踐是將構建分為幾個階段。第一個構建階段,通過stub的方式減少對外部系統的依賴,保持必要的測試集盡量保障構建的效率。第二個階段,進行比較全面的集成測試,以保障質量。溝通這種方式,保障開發效率以及開發質量間的平衡。
- 在類生產商環境中進行測試
盡量在模擬生成環境進行測試。可通過容器、雲計算的方式盡量模擬生產環境。
- 讓可執行的包可以被很容易的獲取
在敏捷實踐中,快速向用戶展示可用的產品獲得用戶反饋是保障項產品成功的關鍵。因此,用戶、產品經理、相關干係人能夠輕易的找到可執行的產品進行試用是持續集成的最佳實踐之一。
- 自動化發布
在集成完成後,通過自動化的方式對接持續交付進入交付管道。
持續集成的好處
簡單來說持續集成帶來的最大的好處是降低來風險。雖然持續集成並沒有減少bug的產生,但是通過快速集成、構建的方式,今早的發現問題,解決問題,從而加強來系統的質量,強化了整個團隊對系統的信心。
參考文獻
- Continuous Integration - Continuous Integration
-----------------------------------------------------------------------------
pstrike 2018.08.20 於廣州天河
【尊重版權:轉載之前請先聯繫我】
推薦閱讀: