圖3 協作流程示意圖
回顧與反思
經過近一年的完善,我們的OSS系統終于從之前的數周才能一次手工集成,達到了每天集成,許多人工操作和檢查統計工作均自動化,不僅僅大大解放了Build Manager的工作,而且避免了人工差錯,提高了效率。對于像OSS這種歷史悠久的復雜系統,持續集成是一個長期優化、完善的實踐過程。畢竟持續集成不是一朝一夕就可以實現的,而應該成為一種持之以恒的習慣。
總之,一個完善的運行良好的持續集成,必須考慮如下問題:
1.持續集成的頻度和粒度
每個開發人員提交代碼更改之前,在自己的branch上需要確保編譯、單元測試通過,避免不必要的集成失敗,只有開發人員確認的可靠代碼,才進行集成。對于小型系統可以做到每次提交都集成,對于像我們OSS這樣的大型系統,可以做到每天一集成。
2.統一構建、并行構建
對于多產品的系統,采用統一的構建、打包、安裝方式有助于靈活實現自動化。并行構建、并行測試、并行安裝等可以充分利用服務器物理資源縮短集成時間。
3.協作整合
在并行的同時,也需要采用合適的同步協作的方法,以保證系統正確運行。如編譯、打包、單元測試的進程在編譯服務器群上,安裝、卸載、功能測試等進程在運行系統的Lab服務器群上,而郵件通知則又需要將這些進程運行的結果整合起來。簡單的文件或目錄共享遠程調用往往就能完成這些控制權的轉移,實現協作和工具整合。
4.高性能build server
高性能的編譯服務器或服務器群也是持續集成中強有力的支撐。支持并行編譯的話將更好。
5.完善的結果報告
完善的結果報告能縮短開發或測試人員發現、解決問題的時間。完整有效的報告應該包含軟件版本信息,本次集成中所做的修改,單元測試和回歸測試結果,卸載/安裝結果。
6.持續集成工具
在持續集成實踐過程中,一個完善的SCM系統(如ClearCase、SVN、CVS),分支并行開發的策略幾乎是必備的支撐。同時,如果在Unix或Linux環境下,亦無須迷信于專門的持續集成工具,有些時候,借助各種腳本工具與cron job完全可以滿足這些需要。
7.自動化
持續集成必須跟自動化結合,才能真正的發揮其威力。
原文轉自:http://www.anti-gravitydesign.com