Ci介绍
CI server在其中CI中扮演的角色,只有三個:
- 定時檢查版本庫是否有更新。
- 透過Build Tool(Build Script),驅動各項品質相關工具(包括建置、測試、分析、部署),產生分析結果。
- 將分析結果回饋給團隊。
A day in the life of CI
- 坐到座位上,打開電腦,看到CI最新的建置成功結果。
- 看到了相關的測試、分析結果。
- 接著請接到版本控管的相關步驟:
- 從版本庫取得最新版本的程式,一定要可以建置成功
- 將要修改的程式簽出(檔案鎖定式的VCS)
- 修改完程式
- 從版本庫更新最新版的程式,若有conflict則merge
- Private Build,將版本庫上最新的source code(包括Unit Test)建置並執行單元測試,並通過其他Checkin policy規範的rule,checkin最新的程式到版本庫上。
- 一段時間後,CI server檢查到版本庫上有更新,則更新最新版的source code,執行Build Script,產生建置、測試、分析與部署的相關結果。
- 所有成員(或依結果等級決定哪些成員該收到)收到相關的email。
CI feature
- Automated:自動化,不需人工介入。
- Build:包括建置、測試、分析、部署甚至產生相關文件(例如根據最新source code產生API document)
- Continuous: CI一旦啟動,就持續活著。
- Continuous integration: 至少每天(Daily build)整合各項服務,儘早發現defect。
Base on CI的開發團隊feature
1. 頻繁簽入,至少每天會checkin一版。
2. 不會從版本庫上get下來不能跑的程式,任何新加入的成員只要從版本庫上get下來就可以build。
3. 不會checkin不合規定的code。
4. 一旦發生因為同時簽入造成的建置失敗問題(包括測試失敗),每個成員都會知道,並用最短的速度修復。
5. 自動測試的門檻降低。
6. 品質指標門檻與測試結果都必須通過。
7. 養成良好的簽入、簽出、private build的習慣。
CI的目的
1. 降低風險。
2. 減少人工手動的繁複程序。
3. 可隨時產生一版可部署的版本。
4. 增加系統透明度。
5. 建立團隊信心。