

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