什麼是CI?
Continuous Integration,持續整合。 當一個大型Project由很多人共同開發時,軟體的品質維護就變得更加困難但也更加重要。在開發過程中會遇到一些問題,像是開發人員用的開發軟體版本不同、一個人開發了新的功能,可能會影響舊的功能運作等。應該在一發生錯誤時就立即更正,到了開發後期才進行build後果不堪設想。
CI的好處有:
- 可以省下不必要的人工測試,藉由CI的幫忙,建立自動化測試,在固定期間中執行所指定的測試項目(Unit test),並可以指定傳送結果的對象。
- 在最短時間內發現問題的所在,減少在整合時所出現的bug現象。
- 配合版本管理容器(如:github)加速開發及方便糾錯。
- 將多個專案透明化且數據化的方式管理,結果視覺化。
CI通用原則
- 每天都要sync(check-in)最新的程式碼,以git而言就是pull。
- 每天要提交一次程式碼check-in。個人程式碼check-in原則:
- 由主分支拉出一個分支(personal workspace)(如:git的fork、或是拉一個branch)
- 由此分支進行修改及測試
- 測試成功後在與主分支同步(其他人修改也可以update),並且在進行修改測試
- 上傳到主分支(pull request),同樣進行修改測試
- 如果要新增功能就重復上述步驟
- 良好的check-in習慣
- 衝突的程式碼必須先解決才check-in
- 不要在每天死線前才check-in
- 要check-in的程式碼必須是要可以正常執行
為何要搭配版本控制容器?
- 保留修訂紀錄
- 比較版本間的差異
- 不可分割的交易。方便
算帳找出問題來源者。
自動建置(auto build/build automation)
建置包含編譯(compile)、測試(testing)、檢查(inspection)、佈署(deployment)等動作。而自動建置藉由撰寫的build script,系統會依此自動建置此專案。
常見的建置工具有gmake、icecream、advanced build tools(XML-based build script)如ant、maven。而筆者想要介紹的CI軟體Cruise Control進行整合,筆者用的是ant配合單元測試(針對每個method或class作測試) 工具JUnit,控管容器則是用Git。
參考資料
Kun-Ta Chuang, Software Development for Large and Open Source Projects, CSIE NCKU.PDF檔案
續集:
Cruise Control(二)-架設Cruise Control及概觀
Cruise Control(三)-config.xml設定
Cruise Control番外篇-Ant build file介紹
續集:
Cruise Control(二)-架設Cruise Control及概觀
Cruise Control(三)-config.xml設定
Cruise Control番外篇-Ant build file介紹
沒有留言:
張貼留言