新聞中心
本文介紹了作者對CICD的理解以及在項目中開展CICD的幾種場景,總結了每種場景實踐的關鍵節(jié)點、帶來的收益,以及結合具體項目開展的實際應用。讀者可以借鑒本文中描述的場景,或借鑒文中提到的實踐方式,在項目中開展CICD,為項目在持續(xù)集成部署上做具體的支撐。

創(chuàng)新互聯(lián)公司自2013年起,先為乾安等服務建站,乾安等地企業(yè),進行企業(yè)商務咨詢服務。為乾安企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
1 前言
基于公司Bamboo、EOS,SonarQube平臺,在項目中開展CICD持續(xù)集成與部署。介紹CICD開展的場景,項目中的實際應用,以及后續(xù)規(guī)劃。
2 CICD基礎概念
CICD 是持續(xù)集成(Continuous Integration)和持續(xù)部署(Continuous Deployment)簡稱。指在研發(fā)過程中自動執(zhí)行一系列腳本來降低開發(fā)引入 bug 的概率,在新代碼從開發(fā)到部署的過程中,盡量減少人工的介入。
CICD 核心:持續(xù)集成、持續(xù)部署、持續(xù)交付。
CI:Continuous Integration,表示持續(xù)集成。
指在向遠程倉庫 push 代碼后,在這次提交合并入主分支前進行一系列測試,構建等流程。
假設現(xiàn)在有個應用的代碼存儲在 倉庫上,每天開發(fā)都會 push 很多次提交,針對每次 push,你可以創(chuàng)建一系列腳本進行自動測試,降低往應用里引入錯誤的概率。它可以應用在包括開發(fā)分支在內(nèi)的多個分支上。
持續(xù)集成過程中很重視自動化測試驗證結果,以保障所有的提交在合并主線之后的質(zhì)量問題,對可能出現(xiàn)的一些問題進行預警。
CD:Continuous Delivery,表示持續(xù)交付。
指在完成CI后可自動將已驗證的代碼發(fā)布到倉庫。
持續(xù)交付的目標是擁有一個可隨時部署到生產(chǎn)環(huán)境的代碼庫。
CD:Continuous Deployment,表示持續(xù)部署。
指在持續(xù)集成的基礎上更進一步,指將推送指倉庫默認分支代碼部署到特定環(huán)境。
通過自動化的構建、測試和部署循環(huán)來快速交付高質(zhì)量的產(chǎn)品。某種程度上代表了一個開發(fā)團隊工程化的程度,任何修改通過了所有已有的工作流就會直接和客戶見面,只有當一個修改在工作流中構建失敗才能阻止它部署到產(chǎn)品線。
3 CICD的開展場景
3.1 編譯部署
實現(xiàn)代碼提交之后的自動編譯-部署過程,取代j-one上構建-部署手動操作
內(nèi)容:
- 代碼提交后的自動構建、自動部署、構建部署結果通知;
收益:
- 去除Jone上代碼構建完成后的手動部署操作中等待時間;
3.2 單元測試
開展基于Junit的單元測試
內(nèi)容:
- 針對后端代碼,基于Junit編寫單元測試腳本,開展單測,獲取單測報告、jacoco代碼覆蓋率報告;
收益:
- 提升測試覆蓋率,提高代碼質(zhì)量;
- 減少bug,快速定位bug;
- 有限支撐重構;
3.3 代碼掃描
實現(xiàn)基于SonarQube的代碼質(zhì)量檢測
實現(xiàn)基于EOS的代碼質(zhì)量檢測
內(nèi)容:
- 實現(xiàn)基于SonarQube、或公司平臺EOS的代碼掃描檢測;
- 代碼提交自動觸發(fā)代碼掃描,最終生成報告、結果通知;
- 掃描結果計入項目質(zhì)量,記錄跟蹤問題,直至問題閉環(huán)解決。
收益:
- 代碼質(zhì)量檢測的手段豐富;
- 多層次的自動化測試,提升代碼質(zhì)量;
- 自動觸發(fā)測試執(zhí)行,縮減測試等待時間,提高效率,實現(xiàn)無人值守;
3.4 自動化測試
實現(xiàn)基于Python、EasyOne、DeepTest、Jmeter 的自動化測試。
內(nèi)容:
- 實現(xiàn)基于SonarQube的代碼質(zhì)量檢測;
- 實現(xiàn)全鏈路各環(huán)節(jié)的自動化測試;
- 代碼提交自動觸發(fā)測試執(zhí)行、生成報告、報告通知;
收益:
- 多層次的自動化測試,提升代碼質(zhì)量;
- 自動觸發(fā)測試執(zhí)行,縮減測試等待時間,提高效率,實現(xiàn)無人值守;
3.5 全鏈路測試探索
將上述單個場景進行組合形成全鏈路測試場景;
代碼提交觸發(fā)鏈路自動運行,以及報告生成、郵件發(fā)送。
4 項目實踐
結合公司內(nèi)部平臺在實際項目中開展CICD。
4.1 公司內(nèi)部平臺
BambooBamboo是京東自研的一套CI/CD流水線解決方案,覆蓋軟件開發(fā)的完整生命周期。
EOSEOS是技術與數(shù)據(jù)中臺自主研發(fā)的代碼掃描系統(tǒng),通過掃描分析代碼,定位到工程中不規(guī)范的編碼片段并給出修改建議,能有效監(jiān)督約束開發(fā)人員統(tǒng)一編碼習慣,減少因編碼不規(guī)范引起的低級錯誤,提高代碼可讀性,提高團隊協(xié)作效率。
4.2 項目實際應用
1)編譯-部署
對Jone上高頻構建部署分支進行在Bamboo上搭建流水線,實現(xiàn):
代碼提交-調(diào)用Jone的構建-調(diào)用Jone的部署-結果通知
觸發(fā)編譯構建的幾種方式:
- 手動執(zhí)行;
- 代碼提交觸發(fā)執(zhí)行;
- 定時任務觸發(fā)執(zhí)行;
- 級聯(lián)其他流水線觸發(fā)執(zhí)行;
應用情況:
- 組內(nèi)所測試所覆蓋都已部署相關流水線;
- 支撐測試人員在所測項目中部署自動構建流水線,共計調(diào)用次數(shù):364次。
2)單元測試
對后端項目開展單元測試,實現(xiàn):
代碼提交-maven構建-獲取單測報告-結果通知
應用效果:
- 極大簡化了獲取單測報告的過程,通過簡單的過程即可針對項目開展單測、執(zhí)行單測、并獲取單測結果;
- 支撐超過8個項目部署單測流水線,JDL-CRM權限系統(tǒng)單測有效提升率:20%
3)自動化測試
項目部署之后,開展自動化回歸測試,用于項目上線前的回歸測試,實現(xiàn):
自動化測試-測試報告-測試結果通知
目前基于Python語言,依托Py第三方模塊,實現(xiàn)腳本編寫,集成到Bamboo平臺,執(zhí)行流水線,獲取報告。
應用效果:
- 負責在銷服項目中開展上線前的UAT自動回歸測試;
4)代碼掃描
基于公司搭建的SonarQube、EOS平臺,開展代碼掃描,實現(xiàn):
代碼提交-代碼掃描-掃描報告-問題手工記錄行云
5 后續(xù)規(guī)劃
CICD過程數(shù)據(jù)與質(zhì)量效能數(shù)據(jù)相結合。
基于DeepTest開展更多項目的自動化測試,集成到BamBoo平臺。
代碼掃描在項目中的應用。
作者:京東物流 陳維
來源:京東云開發(fā)者社區(qū) 自猿其說Tech 轉(zhuǎn)載請注明來源
文章題目:項目開展CICD的實踐探路
本文URL:http://fisionsoft.com.cn/article/cojsice.html


咨詢
建站咨詢
