持續集成(Continuous Integration)基本概念與實踐


本文由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之類的工具。

參考鏈接:

  1. 持續集成(CI)、自動化構建和自動化測試—初探
    http://www.cnblogs.com/chaoa/articles/4447354.html
  2. 八大持續集成工具
    http://openskill.cn/article/218
  3. Bamboo的地址
    https://www.atlassian.com/software/bamboo
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/inter_peng/article/details/53131831


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM