一、什么是devops
1.1 devops定義
DevOps是一組過程方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)、技術(shù)運營和質(zhì)量保障部門之間的溝通、協(xié)作與整合:以始為終,運維合一
1.2 devops理念
理念是讓開發(fā)人員可以持續(xù)集成,運維人員可以持續(xù)交付和持續(xù)部署。讓整個開發(fā)過程自動部署與上線
1.3 devops實現(xiàn)

devops圖
這里從開發(fā)和運維兩個方面初步介紹devops實現(xiàn)需要用到的工具
- 開發(fā):git、gitlab、github、githab(代碼平臺),sonarqube(代碼質(zhì)量檢測),appscan(漏洞掃描)……
-運維:jenkins、docker、k8s、maven……
二、CI/CD/CO基礎(chǔ)
- CI:持續(xù)集成
- CD:持續(xù)交付
- CO:持續(xù)部署
2.1 持續(xù)集成CI
持續(xù)集成指的是開發(fā)人員能夠頻繁地將其代碼集成到公共代碼倉庫的主分支中。
開發(fā)人員能夠在任何時候多次向倉庫提交作品,而不是獨立地開發(fā)每個功能模塊并在開發(fā)周期結(jié)束時一一提交。
持續(xù)集成的好處就是可以加速了軟件開發(fā)進(jìn)度,快速的發(fā)現(xiàn)錯誤,節(jié)省人力成本。

持續(xù)集成
2.2 持續(xù)交付CD
持續(xù)交付指的是在持續(xù)集成的環(huán)境基礎(chǔ)之上,將代碼部署到預(yù)生產(chǎn)環(huán)境。
持續(xù)交付:代碼開發(fā)->單元測試->合并代碼-->測試-->手動-->部署到預(yù)生產(chǎn)

持續(xù)交付
2.3 持續(xù)部署CO
持續(xù)部署是持續(xù)交付的下一步,指代碼在任何時刻都是可部署的,最后將部署到生產(chǎn)環(huán)境的過程自動化。
持續(xù)部署和持續(xù)交付的區(qū)別就是最終部署到生產(chǎn)環(huán)境是自動化的

持續(xù)部署
三、持續(xù)集成實施(代碼發(fā)布流程)

代碼發(fā)布流程
- 第一步,開發(fā)者向代碼倉庫提交代碼。
- 第二步,根據(jù)開發(fā)者提交的代碼合并到主分支進(jìn)行自動化測試,這里是進(jìn)行單元測試,也就是對函數(shù)和模塊進(jìn)行測試。
- 第三步,源碼構(gòu)建,指的是將源碼轉(zhuǎn)換為可以運行的實際代碼,比如安裝依賴,配置各種資源。
- 第四步,構(gòu)建完成進(jìn)行第二輪全面測試,這里會進(jìn)行單元測試和集成測試,對產(chǎn)品功能進(jìn)行全鏈路測試。
- 第五步,將通過測試的代碼版本進(jìn)行打包存檔,發(fā)送到生產(chǎn)環(huán)境的web服務(wù)器,web服務(wù)器解壓后,將站點目錄通過符號鏈接指向解壓后的本地目錄。(ps:在部署之前將數(shù)據(jù)庫進(jìn)行備份,方便新版本出現(xiàn)的問題時進(jìn)行回滾)
- 第六步,新版本出現(xiàn)難以修復(fù)的問題時進(jìn)行回滾到之前版本,這里只需要將符號鏈接指向指向上一個版本的目錄即可,將之前備份的數(shù)據(jù)庫進(jìn)行恢復(fù)。