午夜精品人妻久久久-成年美女很黄的网站-在线看片免费人成视久网app-国产精品美女无遮挡一区二区-91精品国产综合久久久久-国产的免费视频又猛又爽又刺激-在线看片免费人成视久网app-久久香蕉国产精品视频-av一区二区三区高清

云原生架構(gòu)下的產(chǎn)品自動化發(fā)布、快速部署和持續(xù)交付實戰(zhàn)之路

1.背景介紹
CI/CD是一種通過在應(yīng)用開發(fā)階段引入自動化來頻繁向客戶交付應(yīng)用的方法 。CI/CD 的核心概念是持續(xù)集成、持續(xù)交付和持續(xù)部署 。作為一種面向開發(fā)和運維團隊的解決方案,CI/CD 主要針對在集成新代碼時所引發(fā)的問題(亦稱:“集成地獄”) 。CI/CD創(chuàng)建了一個可重復(fù)的、可靠的且可預(yù)見的發(fā)布流程 , 從而大大縮短了發(fā)布周期,不僅節(jié)省下了巨大的金錢成本,還節(jié)省了包括建立和維護這樣一個發(fā)布系統(tǒng)所需要的時間投入 。
在引入CI/CD技術(shù)之前,公司測試人員自動化打包主要依賴實現(xiàn)vue組件之間傳值,在配置任務(wù)的源碼、構(gòu)建觸發(fā)器、構(gòu)建環(huán)境、構(gòu)建、構(gòu)建后操作等步驟后,可以觸發(fā)構(gòu)建任務(wù) 。相比傳統(tǒng)的拉代碼、運行命令打包、整理上傳更新文件,重啟服務(wù)等繁瑣的操作,任務(wù)構(gòu)建這種方式在一定程度上節(jié)省了測試和研發(fā)人員的時間 。但隨著代碼倉庫數(shù)量的日益增長vue組件之間傳值,以及在公司內(nèi)部使用程度越來越深,一些問題也逐漸暴露 。例如:
為了解決以上問題,我們使用了 原生 CI/CD 構(gòu)建框架和基于的聲明式持續(xù)交付工具Argo CD,并將流水線接入項目管理平臺 , 簡化了代碼打包步驟、降低了使用人員的學(xué)習(xí)成本、提供穩(wěn)定的測試環(huán)境、自動粘貼歸檔文件下載鏈接、自動創(chuàng)建更新任務(wù)等 , 進一步提高了持續(xù)集成的效率 。
2. 系統(tǒng)設(shè)計
流水線系統(tǒng)設(shè)計以項目管理平臺為入口 , 為環(huán)境基?。?褂猛瓿蒀I部分功能,在構(gòu)建完成后更新服務(wù)編排文件 。Argo CD則負(fù)責(zé)持續(xù)監(jiān)控應(yīng)用狀態(tài),并更新應(yīng)用 。
2.簡介
是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用,的目標(biāo)是讓部署容器化的應(yīng)用簡單并且高效(),提供了應(yīng)用部署、規(guī)劃、更新、維護的一種機制 。
一個核心的特點就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態(tài)運行著(比如用戶想讓一直運行,用戶不需要關(guān)心怎么去做,會自動去監(jiān)控 , 然后去重啟,新建 , 總之,讓一直提供服務(wù)),管理員可以加載一個微型服務(wù) , 讓規(guī)劃器來找到合適的位置,同時,也系統(tǒng)提升工具以及人性化方面 , 讓用戶能夠方便的部署自己的應(yīng)用(就像 ) 。
2.簡介
是一個基于的云原生 CI/CD 開源框架,屬于 CD 基金會的項目之一 。通過定義 CRD 的方式,讓用戶以靈活的自定義流水線以滿足自身 CI/CD 需求 。
最主要的四個概念為:Task、、 以及。
綜上: 由多個 Task 組成,每次執(zhí)行對應(yīng)生成一條  , 其控制的將創(chuàng)建實際運行的 Pod 。
2.3Argo CD 簡介
Argo CD 是一個為而生的,遵循聲明式理念的持續(xù)部署(CD)工具,它的配置和使用非常簡單,并且自帶一個簡單易用的頁面 , 并且支持多種配置管理/模板工具(例如 、Helm、、、plain-YAML) 。
Argo CD 被實現(xiàn)為一個控制器,它持續(xù)監(jiān)控應(yīng)用的實際狀態(tài),周期性地拉取 Git 倉庫中的配置清單,并將實際狀態(tài)與期望狀態(tài)進行比較,如果實際狀態(tài)不符合期望狀態(tài),就會更新應(yīng)用的實際狀態(tài)以匹配期望狀態(tài) 。
Argo CD的主要功能:
部署或回滾到 Git 倉庫中提交的應(yīng)用程序的任何狀態(tài)(這也是使用 Git 進行版本管理的一大好處 。
2.4項目管理平臺
政通項目管理平臺是流水線使用的入口系統(tǒng),在同步保存?zhèn)}庫、分支、CI/CD參數(shù)后,新增流水線任務(wù)時將參數(shù)傳給 。流水線任務(wù)執(zhí)行時 , 會將當(dāng)前流水線信息推送到項目管理平臺 。
流水線打包成功后會將歸檔路徑推送到項目管理平臺 。
新增流水線時如果勾選了創(chuàng)建更新任務(wù),也會在流水線打包成功后自動創(chuàng)建更新任務(wù) 。
新增流水線時選擇運行測試環(huán)境,則會通過Argo CD更新測試服務(wù) 。
流水線運行異常時 , 會將相關(guān)信息推送到項目管理平臺,方便排查問題 。
3. 流水線的使用
下面以-urban-v14代碼為例,介紹流水線打包如何使用 。
(1)步驟一:參數(shù)配置 。
(2)步驟二:同步配置管理–項目管理–同步 , 同步倉庫、分支、變量 。代碼倉庫會在代碼提交后自動同步 。變量只需要在修改后同步1次即可 。
(3)步驟三:新增提測單項目管理平臺任務(wù)處理完成以后,點擊任務(wù)右上角“生成提測”功能按鈕,從列出的根據(jù)提交記錄查詢的代碼倉庫和分支列表中 , 選擇需要使用的流水線打包的代碼倉庫和分支 。
(4)步驟四:新增流水線 。以上步驟完成后,就來到了最關(guān)鍵最常用的新增流水線環(huán)節(jié),在任務(wù)界面點擊右上角“新增流水線”功能按鈕,填寫相關(guān)信息 。
后臺會根據(jù)提測單自動填充部分內(nèi)容,如有調(diào)整,可手動修改 。
參數(shù)說明如下:
大部分參數(shù)都不需要手動填寫,只需要確認(rèn)無誤后點擊創(chuàng)建 , 流水線任務(wù)即創(chuàng)建成功,等待流水線自動打包完成即可 。打包完成或者因代碼問題打包失敗會通知操作人 。
4. 流水線任務(wù)處理流程
我們從流水線的任務(wù)處理流程、流水線任務(wù)和步驟來說明流水線中的關(guān)鍵技術(shù) 。
4.1任務(wù)接收
流水線任務(wù)是通過接收的 ,  是的一個組件,它可以從各種來源的事件中檢測并提取需要信息 , 然后根據(jù)這些信息來運行和 , 還可以將提取出來的信息傳遞給它們以滿足不同的運行要求 。其核心組件如下:
在接收提交的流水線請求時,使用驗證請求、解析參數(shù),包含了新增流水線請求的值和根據(jù)代碼倉庫id查詢的代碼倉庫的CI/CD參數(shù),根據(jù)參數(shù)值啟動對應(yīng)的 , 如智信h5打包的build–h5或build–h5-npm 。
4.2任務(wù)執(zhí)行
通過指定要運行的,中定義了多個Task,每個Task又包含一個或多個Step 。以-urban-v14代碼的流水線為例,主要Task及其執(zhí)行順序如下:
除了以上流水線打包的任務(wù)外,還在部分指定了多個最終任務(wù)( task),無論Tasks部分聲明的常規(guī)任務(wù)執(zhí)行成功還是報錯,最終任務(wù)都會在常規(guī)任務(wù)執(zhí)行完成后并行執(zhí)行 。
任務(wù)的執(zhí)行順序是根據(jù)來決定的,未聲明的任務(wù)可以和其他任務(wù)并行執(zhí)行 。另外,只有when中聲明的條件都滿足時任務(wù)才會執(zhí)行,否則會跳過 。例如-new–task任務(wù),需要等待歸檔任務(wù)()完成后才可能執(zhí)行 , 并且只有當(dāng)項目管理平臺任務(wù)號不為空,且創(chuàng)建流水線任務(wù)時勾選了創(chuàng)建更新任務(wù),才會在歸檔后創(chuàng)建項目管理平臺更新任務(wù) 。
name: redmine-new-update-taskretries: 1taskRef:name: redminerunAfter:- archivewhen:- input: "$(params.issue_id)"operator: notinvalues: [ "" ]- input: "$(params.new_update_issue_flag)"operator: invalues: [ "true" ]
4.3典型任務(wù)和步驟
中的任務(wù)雖然看起來非常多,但是大部分是可復(fù)用的 。另外,與中聲明的任務(wù)不同,Task中聲明的步驟(step)是按照聲明的順序依次執(zhí)行的 。我們以典型的任務(wù)-為例來說明,任務(wù)步驟執(zhí)行順序如下:
各個步驟完成的內(nèi)容為:
-任務(wù)的很多額外步驟是為了解決代碼代碼不規(guī)范的問題,例如代碼中定義不完整,直接執(zhí)行maven clean-P ,,…時,往往不能成功 。在-步驟中,通過多次循環(huán)補充當(dāng)前依賴的其他 。雖然直接修改代碼也能解決這個問題,但是由于-urban-v14代碼插件非常多,分支也非常多,改起來會相當(dāng)耗時 。并且由于插件之間依賴關(guān)系比較復(fù)雜,開發(fā)過程中難以維持正確的依賴關(guān)系定義 。
4.4發(fā)布更新
由上文任務(wù)列表可知,服務(wù)更新其實也是包含在任務(wù)執(zhí)行中的 。我們借助Argo CD的自動同步和部署應(yīng)用程序的優(yōu)勢 , 在打包完成后,制作鏡像 , 并推送到鏡像倉庫 。隨后更新Argo CD部署文件代碼,觸發(fā)Argo CD同步 , Argo CD檢測到部署文件更新后,將自動與K8S交互,更新服務(wù) 。K8S滾動更新的特性 , 能夠在保證服務(wù)不中斷的情況下完成升級 。
總結(jié)起來,流水線的使用流程如下圖:
5. 成果和計劃
相比傳統(tǒng)的打包,流水線的優(yōu)勢在于:
截止目前,流水線平臺已歸納支持12種類型的代碼結(jié)構(gòu)打包,主要包含了智云主框架、智云前端、智信前端、微服務(wù)、智云拆分代碼、智信拆分代碼等 。項目管理平臺接入流水線僅半年就完成了打包任務(wù)數(shù)3987,流水線任務(wù)總運行8140次 。通過Argo CD管理一網(wǎng)統(tǒng)管、信息采集、城市大腦、基礎(chǔ)平臺、市政、執(zhí)法、星橋、靈瓏、社會治理、運管服10條產(chǎn)品線,共67套運行環(huán)境 。
后續(xù)計劃整合武漢的服務(wù)器,全部虛擬化后 , 將各產(chǎn)品線測試環(huán)境全面接入流水線,研發(fā)、測試環(huán)境隔離互不干擾,做到可按需開啟,定時關(guān)閉 。利用流水線流程的易擴展性,接入單元測試、自動測試流程 。
【云原生架構(gòu)下的產(chǎn)品自動化發(fā)布、快速部署和持續(xù)交付實戰(zhàn)之路】本文到此結(jié)束,希望對大家有所幫助 。