1、持續(xù)集成
慨念: 持續(xù)集成的目的,就是讓產(chǎn)品可以快速迭代,同時還能保持高質(zhì)量。它的核心措施是,代碼集成到主干之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。
優(yōu)點:
(1)快速發(fā)現(xiàn)錯誤。每完成一點更新,就集成到主干,可以快速發(fā)現(xiàn)錯誤,定位錯誤也比較容易。
(2)防止分支大幅偏離主干。如果不是經(jīng)常集成,主干又在不斷更新,會導(dǎo)致以后集成的難度變大,甚至難以集
2、持續(xù)交付
持續(xù)交付(Continuous delivery)指的是,頻繁地將軟件的新版本,交付給質(zhì)量團(tuán)隊或者用戶,以供評審。如果評審?fù)ㄟ^,代碼就進(jìn)入生產(chǎn)階段。持續(xù)交付可以看作持續(xù)集成的下一步。它強調(diào)的是,不管怎么更新,軟件是隨時隨地可以交付的。
3、持續(xù)部署
持續(xù)部署(continuous deployment)是持續(xù)交付的下一步,指的是代碼通過評審以后,自動部署到生產(chǎn)環(huán)境。持續(xù)部署的目標(biāo)是,代碼在任何時刻都是可部署的,可以進(jìn)入生產(chǎn)階段。持續(xù)部署的前提是能自動化完成測試、構(gòu)建、部署等步驟。它與持續(xù)交付的區(qū)別,可以參考下圖。
4、流程
4.1 提交
流程的第一步,是開發(fā)者向代碼倉庫提交代碼。所有后面的步驟都始于本地代碼的一次提交(commit)。
4.2 第一輪測試
單元測試:針對函數(shù)或模塊的測試
集成測試:針對整體產(chǎn)品的某個功能的測試,又稱功能測試
端對端測試:從用戶界面直達(dá)數(shù)據(jù)庫的全鏈路測試
4.3 構(gòu)建
常用的構(gòu)建工具如下。
Jenkins? https://jenkins.io/index.html? pdf文檔:? ? http://files.cnblogs.com/files/zz0412/jenkins%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.pdf
Travis? https://travis-ci.com/
Codeship? https://codeship.com/
Strider? http://stridercd.com/
詳細(xì)信息: http://cloud.51cto.com/art/201508/487605.htm? 了解六款不容錯過的開源持續(xù)集成工具
介紹兩種:
-----------------------------------------------------------------------
enkins
項目頁面? https://jenkins.io/index.html
源代碼? https://github.com/jenkinsci
許可協(xié)議:MIT? http://opensource.org/licenses/MIT
Jenkins的誕生介于Hudson項目發(fā)布與Sun Microsystems公司被收購之間。Jenkins以Java語言開發(fā)而成,且能夠在WAR文件下載完成之后使用java –jar jenkins.war命令進(jìn)行安裝。大家也可以將其部署在servlet容器當(dāng)中。Jenkins的主要任務(wù)分為以下兩種:持續(xù)構(gòu)建/測試軟件項目與以外部方式監(jiān)控運行任務(wù)。對于前者,Jenkins支持一系列SCM工具——包括Git、Mercurial、Subversion以前Clearcase等等。大家可以以該項目為基礎(chǔ)構(gòu)建Apache Ant以及Apache Maven外加其它shell腳本,或者利用Windows批處理文件完成各類預(yù)/后構(gòu)建操作。需要注意的是,幾乎所有配置都能夠通過基于Web的GUI完成。
Jenkins同時也可以作為來自第三方供應(yīng)商的服務(wù)方案,但如果大家擁有一套規(guī)模可觀的待測試軟件清單,那么它可能更適合運行在我們自己的服務(wù)器之上——這樣不僅能夠保證各位對基礎(chǔ)設(shè)施問題擁有全面控制能力,同時也有助于企業(yè)客戶保障軟件安全水平。
使用手冊: http://blog.csdn.net/x_men_01/article/details/51557731
http://blog.csdn.net/wangmuming/article/details/22924815
-----------------------------------------------------------------------
Strider
項目頁面? http://stridercd.com/
源代碼? https://github.com/Strider-CD/strider
許可協(xié)議: BSD License? https://en.wikipedia.org/wiki/BSD_licenses
Strider由Node.JS與JavaScript編寫而成,同時利用MongoDB作為后備存儲機制。我們必須首先安裝MongoDB與Node.JS,而后才安裝Strider。大家可以使用npm install strider命令進(jìn)行安裝。不過,Strider最大的特色在于無與倫比的可定制能力,我們可以親自動手編寫插件以強化其功能——這當(dāng)然不是件壞事,但如果各位想要的是一款無需編程就能快速起效的方案,那么最好還是優(yōu)先考慮其它項目。
目前總結(jié):Jenkins和Strider是開源軟件,Travis和Codeship對于開源項目可以免費使用。它們都會將構(gòu)建和測試,在一次運行中執(zhí)行完成。
4.4 部署
通過了第二輪測試,當(dāng)前代碼就是一個可以直接部署的版本(artifact)。將這個版本的所有文件打包(tar filename.tar *)存檔,發(fā)到生產(chǎn)服務(wù)器。
生產(chǎn)服務(wù)器將打包文件,解包成本地的一個目錄,再將運行路徑的符號鏈接(symlink)指向這個目錄,然后重新啟動應(yīng)用。這方面的部署工具有Ansible(http://www.ansible.com/),Chef(https://www.chef.io/chef/),Puppet(https://puppetlabs.com/)等。
4.5 回滾
一旦當(dāng)前版本發(fā)生問題,就要回滾到上一個版本的構(gòu)建結(jié)果。最簡單的做法就是修改一下符號鏈接,指向上一個版本的目錄。
本來大神阮一峰參考:?
國外大神哥:
https://blog.risingstack.com/continuous-deployment-of-node-js-applications/