2014年2月13日 星期四

[筆記] Cruise Control(一)-介紹Continuous Integration

什麼是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介紹

沒有留言:

張貼留言