本文由Markdown語法編輯器編輯完成。
From https://blog.csdn.net/inter_peng/article/details/53131831
1. 持續集成的概念
持續集成(Continuous Integration)的概念有很多不同的版本,持續集成的出現是為了配合敏捷開發(相對於瀑布開發)的速度和效率而產生的一個用於編譯、測試、發布、部署的工具。
為什么叫持續呢?因為編碼人員每天都會向項目提交代碼,因此項目源碼每天都會發生改變,為了能夠驗證最新的代碼是否能夠被成功編譯,是否會影響前面迭代已經通過的自動化測試case,是否能夠打出完整的可執行包供測試人員進行測試……。通過每天,甚至是每次提交代碼后的持續集成,可以很快地得到反饋,並且易於追溯,即使出了問題也很容易知道是由於哪一位開發人員的提交而導致的。
持續集成(CI)是一種實踐,可以讓團隊在持續的基礎上收到反饋並進行改進,不必等到開發周期后期才尋找和修復缺陷。
通俗一點兒說:
就是指對於開發人員的每一次代碼提交,都自動地把Repository中所有代碼Check out到一個空目錄,並且自動運行所有Test Case。如果成功則接受這次提交,否則告訴所有人,這是一個失敗的Revision。
持續集成一般通過編寫好的python等腳本,自動完成一系列集成所需要的步驟。從代碼的check out, 構建項目工程,編譯源代碼,生成可執行包或安裝文件,壓縮打包,上傳到公司或項目組的FTP等位置……
如果不想每次提交都去集成的話,可以選擇在一個固定的時間點去集成,比如每天晚上等項目組的所有成員都已經把當天的代碼提交完畢后,啟動集成。當第二天上班的時候,測試人員會去FTP下載最新的項目包,開始測試開發人員前一天提交的代碼是否正確。這也是Daily Build的概念來源,即每日構建。
2. 持續集成的工具
有一篇文章介紹了持續集成的八大工具,分別是:
- Hudson
- CruiseControl
- Continuum
- QuickBuild
- Bamboo
- Jenkins
- TeamCity
- CI-Eye
關於這幾個持續集成工具的詳細介紹,可以參考這篇文章:
《八大持續集成工具》http://openskill.cn/article/218。
我在三年半的工作生涯中,接觸過的兩個持續集成工具分別是Bamboo和Jenkins,因此對這兩個持續集成工具比較親切,但是真正了解得很少。一時,這個工具一般都是自動運行,很少需要人的參與,除非前一天構建失敗后,需要登錄工具去下載失敗的log;二來,這個也主要是項目經理和測試組會經常訪問的工具,開發人員一般只負責提交代碼到SVN即可。
但是,不管是哪一個持續集成工具,它本質上只不過是一個定時器,時間一到,做你腳本里讓它去做的事。如果,想要擴展持續集成的作用,則需要將這個工具與其他的工具結合,才能顯示出持續集成的本色。
比如,如果想增加測試工具,選擇JUnit, JWebUnit, Selenium等;
想檢查代碼標准,需要用checkstyle, sonarqube等代碼規范檢查工具;
想了解測試覆蓋率,可以用Istanbul, JCoverage等工具;
想打包生成二進制文件,要用Ant, Make之類的工具。
參考鏈接:
- 持續集成(CI)、自動化構建和自動化測試—初探
http://www.cnblogs.com/chaoa/articles/4447354.html - 八大持續集成工具
http://openskill.cn/article/218 - Bamboo的地址
https://www.atlassian.com/software/bamboo
