摘要:隨著軟件開發(fā)的不斷演進(jìn)與創(chuàng)新,基于DevOps一體化平臺的持續(xù)集成與持續(xù)交付已成為企業(yè)提高軟件質(zhì)量與交付速度的核心策略。文章探討了基于DevOps一體化平臺的持續(xù)集成與持續(xù)交付流程架構(gòu),介紹了一體化平臺與接入規(guī)范。研究結(jié)果顯示,基于DevOps一體化平臺的持續(xù)集成與持續(xù)交付機(jī)制有助于推動企業(yè)在數(shù)字化轉(zhuǎn)型中的持續(xù)創(chuàng)新與優(yōu)化,實現(xiàn)高質(zhì)量的快速交付,進(jìn)而提升企業(yè)的競爭力和靈活性。
關(guān)鍵詞:持續(xù)集成;持續(xù)交付;一鍵發(fā)布;一鍵升級
中圖分類號:TP311" 文獻(xiàn)標(biāo)志碼:A
0 引言
隨著軟件開發(fā)的不斷演進(jìn),確保軟件產(chǎn)品的高質(zhì)量快速交付已成為衡量企業(yè)核心競爭力的重要指標(biāo)[1]。為了能夠滿足快速迭代和自動化交付的需求,基于DevOps的持續(xù)集成與持續(xù)交付的理念應(yīng)運而生,并且已經(jīng)被越來越多的企業(yè)投入使用。DevOps一體化的核心在于消除傳統(tǒng)開發(fā)流程中的壁壘,提高跨部門之間的協(xié)作,持續(xù)集成持續(xù)交付是優(yōu)秀的軟件開發(fā)實踐,保證了軟件開發(fā)的持續(xù)性,提高了軟件開發(fā)的質(zhì)量與交付速度[2]。
當(dāng)前,國內(nèi)外許多知名企業(yè)已經(jīng)建立了自己的持續(xù)集成持續(xù)交付系統(tǒng),如阿里的云效平臺、百度的效率云等。這些實踐案例證明,持續(xù)集成與持續(xù)交付可以為軟件的快速迭代和高質(zhì)量開發(fā)應(yīng)用提供重要保障。對于持續(xù)集成與持續(xù)交付的實踐,較多中小型企業(yè)仍處于探索階段,且目前關(guān)于研發(fā)交付機(jī)制完整工作流的相關(guān)介紹較為有限。本文以H公司研發(fā)云一體化平臺為基礎(chǔ),探討持續(xù)集成與持續(xù)交付系統(tǒng)架構(gòu),旨在提供理論支持與實踐指導(dǎo),幫助企業(yè)建立安全高效的軟件研發(fā)交付流程生態(tài)。
1 一體化平臺與接入規(guī)范
1.1 一體化平臺
研發(fā)云作為一體化的DevOps實踐平臺,構(gòu)建了一套全鏈路自動化機(jī)制,涵蓋了從源代碼管理到應(yīng)用系統(tǒng)部署的整個流程。研發(fā)云以客戶需求為核心,采用快速迭代和循序漸進(jìn)的方法進(jìn)行軟件開發(fā),強(qiáng)調(diào)團(tuán)隊間緊密協(xié)作,以更好地適應(yīng)需求變化[3]。作為端到端、標(biāo)準(zhǔn)化、自動化且敏捷的產(chǎn)品集成與交付體系,研發(fā)云顯著縮短了軟件交付周期。與傳統(tǒng)的瀑布式開發(fā)模式相比,基于DevOps一體化的開發(fā)方式提供了更及時的階段性結(jié)果反饋,需求拆分更加細(xì)化,使團(tuán)隊能夠更快地應(yīng)對變化。
開發(fā)運維的實踐和方法論不僅取決于一體化平臺本身所提供的豐富功能集,還依賴于應(yīng)用開發(fā)、部署及維護(hù)過程中嚴(yán)格遵循的標(biāo)準(zhǔn)化規(guī)范。該規(guī)范是奠定自動化工具高效運作的基礎(chǔ),也是實現(xiàn)與DevOps一體化平臺無縫銜接不可或缺的先決條件[4]。
1.2 配置項管理
配置項涵蓋內(nèi)容廣泛,包括但不限于源代碼、產(chǎn)品版本、產(chǎn)品分支、應(yīng)用文件、鏡像文件、腳本文件、菜單文件以及操作日志文件等,它們共同構(gòu)成了軟件的基礎(chǔ)框架。源代碼、配置文件、應(yīng)用文件、菜單文件、規(guī)則文件、API文件以及操作日志文件等軟件配置項,通過集成至一體化平臺中的Git版本管理工具進(jìn)行管控;配置文件中包含各種運行所需的參數(shù),如系統(tǒng)配置參數(shù)、消息隊列主題、網(wǎng)關(guān)配置、應(yīng)用實例數(shù)量、容器數(shù)量、鏡像文件、產(chǎn)品版本、產(chǎn)品分支,存儲在一體化平臺系統(tǒng)中管理;數(shù)據(jù)庫腳本以任務(wù)的形式記錄在任務(wù)單中進(jìn)行管理。通過研發(fā)云一體化平臺統(tǒng)一管理配置項的機(jī)制,簡化工作流程,提高開發(fā)效率,促進(jìn)軟件開發(fā)的敏捷性和質(zhì)量。
1.3 配置項接入規(guī)范
在軟件開發(fā)生命周期的端到端流程中,即從源代碼的編寫到應(yīng)用系統(tǒng)成功部署至生產(chǎn)環(huán)境的過程中,配置項作為支撐軟件構(gòu)建、測試、部署及運維活動的基礎(chǔ)元素,其標(biāo)準(zhǔn)化策略對于確保持續(xù)集成與持續(xù)交付系統(tǒng)的有效性與可靠性至關(guān)重要[4]。
配置項的接入規(guī)范主要是標(biāo)識規(guī)范化,以ctm產(chǎn)品為例,如表1所示,制定相關(guān)配置項的標(biāo)識規(guī)范是ctm產(chǎn)品接入一體化平臺實現(xiàn)持續(xù)集成與持續(xù)交付運行的前提條件。
配置項接入規(guī)范過程包含以下幾個重要環(huán)節(jié)。(1)明確責(zé)任人。配置項規(guī)范體系應(yīng)指定明確的責(zé)任人制定配置項規(guī)范定義和校驗機(jī)制。該機(jī)制應(yīng)集成于一體化平臺,能夠自動對配置項進(jìn)行合規(guī)檢查,確保其符合規(guī)范定義。(2)持續(xù)改進(jìn)校驗機(jī)制。隨著軟件的演進(jìn),規(guī)范制定者應(yīng)不斷優(yōu)化改進(jìn)校驗機(jī)制,以提高校驗規(guī)則的適應(yīng)性和準(zhǔn)確性。(3)建立反饋與修正流程。針對校驗過程中發(fā)現(xiàn)的不符合規(guī)范的配置項,應(yīng)建立清晰、便捷的反饋與修正流程,包括向相關(guān)人員發(fā)送通知、提供違規(guī)描述以及指導(dǎo)說明等。(4)實施持續(xù)監(jiān)控與評估。配置項被錄入并應(yīng)用于系統(tǒng)后,應(yīng)實施持續(xù)的監(jiān)控與評估機(jī)制,以確保其在實際運行中的表現(xiàn)符合預(yù)期。該過程包括性能監(jiān)控、錯誤日志分析以及用戶反饋收集等方面,以便及時發(fā)現(xiàn)并解決潛在問題。
2 持續(xù)集成與持續(xù)交付流程研究
2.1 總體框架
本文基于研發(fā)云一體化平臺,設(shè)計了與軟件開發(fā)周期相適應(yīng)的持續(xù)集成與持續(xù)交付流程,包括持續(xù)集成、持續(xù)交付、一鍵發(fā)布和一鍵升級4個關(guān)鍵階段,持續(xù)集成與持續(xù)交付架構(gòu)如圖1所示。
2.2 持續(xù)集成
持續(xù)集成是一種保證代碼質(zhì)量的軟件開發(fā)實踐,它的核心理念在于將源代碼集成的頻率提升至每日甚至每次提交,通過執(zhí)行自動化構(gòu)建與自測流程,開發(fā)人員能夠高效地檢查變更代碼中的語法錯誤和功能缺陷,并及時進(jìn)行修復(fù)[5]。
持續(xù)集成主要包括代碼下載、代碼編譯、靜態(tài)代碼檢查、單元測試、鏡像構(gòu)建等關(guān)鍵步驟。本文主要闡述以任務(wù)單維度觸發(fā)的持續(xù)集成流程,旨在提高軟件開發(fā)過程的高效性和代碼質(zhì)量。開發(fā)人員根據(jù)具體的任務(wù)單,從發(fā)布分支提取特定的代碼分支,在本地環(huán)境中對源代碼進(jìn)行變更修改。開發(fā)人員將修改后的代碼提交至相應(yīng)的特性代碼分支時,系統(tǒng)將自動觸發(fā)持續(xù)集成構(gòu)建。該構(gòu)建過程將執(zhí)行全面的質(zhì)量檢查,包括編譯檢查、單元測試、代碼度量分析、代碼風(fēng)格檢查以及靜態(tài)代碼分析等多個方面。質(zhì)量檢查確保代碼的質(zhì)量符合既定的規(guī)范標(biāo)準(zhǔn),降低潛在的缺陷和技術(shù)不足。若在檢查過程中發(fā)現(xiàn)問題,開發(fā)人員將根據(jù)系統(tǒng)提示日志進(jìn)行相應(yīng)的代碼修改。修改完成后,開發(fā)人員將更新的代碼再次提交至特性分支,觸發(fā)第二次持續(xù)集成。該過程將循環(huán)進(jìn)行,直至所有檢查項通過為止。通過所有質(zhì)量檢查后,代碼將自動合并至過程分支,并生成應(yīng)用鏡像更新至測試環(huán)境,進(jìn)行需求驗證,確保最終交付的軟件產(chǎn)品符合用戶需求和預(yù)期。
持續(xù)集成的優(yōu)勢和價值在于及早地識別錯誤,快速地反饋結(jié)果,降低問題向下游測試階段泄露的風(fēng)險,并促進(jìn)開發(fā)人員不斷完善自測用例,從而提升整體代碼質(zhì)量和測試效能。
2.3 持續(xù)交付
持續(xù)交付是持續(xù)集成的進(jìn)一步實踐和擴(kuò)展,側(cè)重于自動化構(gòu)建和更新至測試環(huán)境,對開發(fā)人員在過程分支提交的代碼進(jìn)行全面驗證,以確保新功能和變更的正確性[6]。
本文從2個維度闡述持續(xù)交付。(1)針對任務(wù)單維度的持續(xù)交付流程。開發(fā)人員根據(jù)任務(wù)單提交代碼至過程庫后,系統(tǒng)會自動觸發(fā)構(gòu)建生成鏡像并更新至測試環(huán)境。測試驗證包括腳本驗證、自動化測試用例執(zhí)行和功能點驗證。若發(fā)現(xiàn)錯誤或驗證不通過,測試人員將根據(jù)日志進(jìn)行排查并優(yōu)化自動化用例或退回任務(wù)單給開發(fā)團(tuán)隊進(jìn)行修改。這一過程持續(xù)進(jìn)行,直至所有驗證通過。完成驗證后,任務(wù)單將轉(zhuǎn)入合并至發(fā)布分支的環(huán)節(jié),系統(tǒng)會自動執(zhí)行合并命令,將已驗證通過的代碼整合至發(fā)布分支。(2)公用的JAR包也會被推送至私服,以供其他產(chǎn)品代碼構(gòu)建使用。另一方面,為進(jìn)一步提高產(chǎn)品代碼質(zhì)量,配置管理員在DevOps平臺上設(shè)定定時任務(wù),每晚22:00自動啟動所有產(chǎn)品的持續(xù)集成構(gòu)建流程,對發(fā)布分支進(jìn)行再次集成驗證。驗證過程包括編譯、語法檢查、集成測試等多個方面,確保代碼質(zhì)量符合標(biāo)準(zhǔn)。源碼驗證通過后,系統(tǒng)自動觸發(fā)鏡像制作,生成帶有發(fā)布標(biāo)識的鏡像存儲在倉庫中,為后續(xù)發(fā)布做準(zhǔn)備。
持續(xù)交付不僅降低了版本發(fā)布前集成驗證可能出現(xiàn)的風(fēng)險,還通過系統(tǒng)化的自動化測試流程及時發(fā)現(xiàn)并修復(fù)了潛在缺陷,為版本的自動化驗收和快速交付提供了重要保障。
2.4 一鍵發(fā)布
一鍵發(fā)布是DevOps實踐中的重要環(huán)節(jié),通過該工具自動獲取鏡像文件、應(yīng)用文件、數(shù)據(jù)庫腳本、配置文件、系統(tǒng)參數(shù)、菜單文件等配置項,生成可用于一鍵升級操作的版本包,以提高版本發(fā)布的效率和可靠性。
在H公司,版本制作和發(fā)布操作由專職的配置管理員負(fù)責(zé)。在版本制作過程中,配置管理員使用研發(fā)云平臺的一鍵發(fā)布功能,根據(jù)預(yù)設(shè)條件提取經(jīng)過持續(xù)交付驗證并存儲于鏡像倉庫和一體化平臺數(shù)據(jù)庫中的各類配置項。經(jīng)過檢查確認(rèn)無誤后,進(jìn)行一鍵式發(fā)布,并對配置項進(jìn)行歸檔。一鍵發(fā)布操作的主要目的是將指定的配置項整合為一個完整的升級包,極大地簡化了版本制作過程,提高了發(fā)布速度和效率,減少了人工干預(yù),降低了錯誤風(fēng)險。此外,發(fā)布?xì)v史被清晰記錄在平臺系統(tǒng)中,方便后續(xù)追溯和分析。這種系統(tǒng)化記錄方式增強(qiáng)了透明度,使相關(guān)人員能夠?qū)γ看伟l(fā)布進(jìn)行詳細(xì)審查和分析,快速定位和解決問題。通過歷史數(shù)據(jù)分析,研發(fā)團(tuán)隊能夠發(fā)現(xiàn)潛在瓶頸和改進(jìn)點,持續(xù)優(yōu)化發(fā)布流程,提升軟件代碼質(zhì)量。
2.5 一鍵升級
一鍵升級采用可視化編排方式,使用Kubernetes命令、應(yīng)用文件、配置文件、鏡像文件以及腳本文件的方式實現(xiàn)將版本包自動更新至生產(chǎn)環(huán)境。其中,應(yīng)用升級的配置文件主要有2類:configmap.yaml和deployment.yaml。鏡像文件和應(yīng)用文件的配置信息都集成到y(tǒng)aml配置文件中,系統(tǒng)在自動化升級過程中讀取配置文件中的信息,將最新的鏡像文件無縫升級至Kubernetes集群,實現(xiàn)快速、可靠的應(yīng)用更新和部署。相較于傳統(tǒng)的升級模式,一鍵升級機(jī)制在軟件版本迭代更新和生產(chǎn)環(huán)境版本管理方面具有顯著優(yōu)勢。首先,提高軟件版本更新部署速度和效率,減少時間和人力成本。其次,增強(qiáng)升級過程的可靠性和一致性,降低操作失誤導(dǎo)致系統(tǒng)故障的風(fēng)險。最后,工具自動對腳本、鏡像等進(jìn)行正確性校驗,實時展示升級進(jìn)度和日志,自動生成升級報告,為生產(chǎn)環(huán)境版本管理提供更高的可追溯性和透明度,有助于合規(guī)性檢查及問題定位與解決。
一鍵升級過程涉及如下關(guān)鍵步驟。(1)生產(chǎn)環(huán)境備份。正式升級前備份生產(chǎn)環(huán)境數(shù)據(jù),以便在出現(xiàn)問題時能夠快速回退,降低系統(tǒng)風(fēng)險并保障業(yè)務(wù)連續(xù)性。(2)升級包導(dǎo)入。根據(jù)指定的目錄獲取升級包并將其下載上傳至目標(biāo)服務(wù)器,隨后進(jìn)行解壓和驗證操作,以確保升級包文件完整無損。接著,通過一鍵升級界面將版本包信息導(dǎo)入目標(biāo)環(huán)境。當(dāng)數(shù)據(jù)庫資源、鏡像資源以及菜單文件等配置項的圖標(biāo)全部顯示為綠色時,表明版本包含的配置項已成功導(dǎo)入,可以繼續(xù)進(jìn)行下一步的升級編排。(3)配置項編排。根據(jù)目標(biāo)環(huán)境需求對升級包中的SQL腳本、配置數(shù)據(jù)、配置文件、應(yīng)用文件以及應(yīng)用本身進(jìn)行編排,確保資源整合順利實施。H公司根據(jù)腳本是否能自動執(zhí)行將其明確區(qū)分為紅色腳本和藍(lán)色腳本,以便管理和執(zhí)行。紅色腳本指需要手動執(zhí)行的腳本,例如對大型表字段的修改,這類操作因其復(fù)雜性和潛在風(fēng)險,通常不適合自動執(zhí)行。相比而言,藍(lán)色腳本指可以安全自動執(zhí)行的腳本,例如增加表數(shù)據(jù)的任務(wù)。此外,配置數(shù)據(jù)作為應(yīng)用的業(yè)務(wù)數(shù)據(jù),包括Open API定義、Offer、資費配置、客戶通知及賬單模板等,支持獨立升級,增強(qiáng)靈活性。配置文件包含應(yīng)用運行所需的定義數(shù)據(jù),如菜單文件、規(guī)則文件和API文件,而應(yīng)用文件包含應(yīng)用運行所需參數(shù),如系統(tǒng)配置參數(shù)、消息隊列主題及網(wǎng)關(guān)配置等。發(fā)布說明詳細(xì)列出本次升級包中的任務(wù)單明細(xì)及相關(guān)描述信息。(4)實施部署。將升級包中的組件部署至目標(biāo)系統(tǒng),包括更新現(xiàn)有應(yīng)用及執(zhí)行數(shù)據(jù)庫腳本等。升級編排支持單個應(yīng)用的獨立升級,也允許同時升級產(chǎn)品及其定制版本。鏡像采用定制版本,腳本、配置文件和標(biāo)準(zhǔn)配置包結(jié)合產(chǎn)品與定制內(nèi)容特性,確保兼容性和功能完整性。(5)功能測試。升級完成后,進(jìn)行全面的功能測試,以確認(rèn)新版本的應(yīng)用正常運行且未引入新問題。(6)監(jiān)控與反饋。在升級后的初期階段,密切監(jiān)控系統(tǒng)運行狀態(tài),收集用戶反饋,以保障系統(tǒng)穩(wěn)定性。(7)文檔更新。記錄升級過程、變更內(nèi)容及遇到的問題,以便后續(xù)參考和改進(jìn)。
3 結(jié)語
本文基于DevOps一體化平臺,構(gòu)建了一套自動化持續(xù)集成與持續(xù)交付系統(tǒng)流程,并闡述了各個環(huán)節(jié)的實現(xiàn)方式。該集成與交付流程具有較強(qiáng)的通用性,易于移植和實施,為持續(xù)集成與持續(xù)交付的學(xué)術(shù)研究和實踐提供有益參考。持續(xù)集成與持續(xù)交付的實踐促進(jìn)開發(fā)、測試和運維之間的緊密合作,有助于提升項目交付的靈活性和響應(yīng)速度,使企業(yè)能夠高效地適應(yīng)快速變化的市場需求和技術(shù)挑戰(zhàn)。
參考文獻(xiàn)
[1]喬瑋,趙文瑞.DevOps發(fā)展現(xiàn)狀及趨勢研究[J].數(shù)字技術(shù)與應(yīng)用,2018(4):74-76.
[2]李超,花磊,宋云奎.OpsFlow:一種面向DevOps的應(yīng)用自動化部署引擎[J].計算機(jī)與數(shù)字工程,2019(1):190-194,247.
[3]王曉龍.基于敏捷開發(fā)的持續(xù)交付系統(tǒng)的研究[J].信息技術(shù),2023(5):131-136.
[4]田健.基于DevOps的軟件開發(fā)項目管理研究[D].北京:北京郵電大學(xué),2023.
[5]付喬,張昊.持續(xù)集成持續(xù)交付的NFV/SDN網(wǎng)絡(luò)新型集成體系[J].移動通信,2019(7):22-27.
[6]龔桂芬,龔蘭蘭.基于Devops的軟件項目開發(fā)實踐[J].工業(yè)控制計算機(jī),2022(4):87-89.
(編輯 沈 強(qiáng)編輯)
Research on continuous integration and continuous delivery process based on DevOps
TU" Chenfeng
(Whale Cloud Technology Co., Ltd., Nanjing 210000, China)
Abstract:" With the continuous evolution and innovation of software development, continuous integration and delivery based on DevOps integrated platform has become the core strategy for enterprises to improve software quality and delivery speed. The article delves into the architecture of a continuous integration and continuous delivery system based on the DevOps integrated platform, introduces DevOps integrated platfrom access specification. The research results show that the continuous integration and continuous delivery strategy based on DevOps integrated platform not only helps drive continuous innovation and optimization in enterprises’ digital transformation, but also enables rapid delivery of high-quality versions, thereby enhancing the competitiveness and flexibility of enterprises.
Key words: continuous integration; continuous delivery; one click deployment; one click upgrade