應用在不斷迭代過程中,需要持續集成(CI)和持續部署(CD)。通過自動化的構建集成、測試和循環部署,實現快速交付高質量產品并降低人力成本。本文介紹使用云效2020完成應用的持續集成和部署。
前提條件
在EDAS控制臺已部署應用。具體操作,請參見在容器服務K8s集群中使用JAR包或WAR包部署應用。
已將業務代碼上傳至代碼庫。
背景信息
使用云效2020實現應用的持續集成和部署,根據您期望的部署環境不同,有以下兩種場景:
部署到EDAS ECS環境:只能使用JAR包或者WAR包構建、部署。相關文檔,請參見使用云效2020部署Java應用至ECS集群。
部署到EDAS K8s環境:只能使用鏡像構建、部署。
根據不同應用類型,在EDAS K8s環境上,包含JAR包、WAR包和鏡像3種部署應用的方式。在云效2020側持續集成和部署應用到EDAS K8s環境時,只能以鏡像方式構建和部署。
使用云效2020實現應用的持續集成和部署,您只需要將開發好的新版本應用代碼提交到代碼庫,云效流水線Flow會監聽代碼事件,當滿足觸發事件時會觸發流水線運行,部署新版本應用到EDAS K8s環境。
代碼開發與提交一般由開發人員執行,本文不做介紹。本文僅介紹在云效流水線Flow側如何創建流水線,并配置代碼源、鏡像倉庫、部署對象和發布策略等操作流程。
步驟一:在云效創建企業
如果您是第一次使用云效Flow,則需要在云效上創建您的企業。
登錄云效Flow。
設置企業名稱、研發組織規模,單擊立即創建。
步驟二:在云效創建流水線
登錄云效Flow。
在左側導航欄,單擊我的流水線,然后單擊右上角的新建流水線。
在選擇流水線模板對話框,在左側單擊Java,在右側選擇Java · 鏡像構建,發布到EDAS Kubernetes,然后單擊創建。
重要在EDAS控制臺創建應用時使用的部署方式(JAR、WAR和鏡像),必須與在云效流水線設置保持一致。例如:在EDAS上使用鏡像方式部署應用,那么在云效設置流水線時,構建環節必須是鏡像相關配置。
流水線創建完成后,自動跳轉到流水線配置頁面。
步驟三:配置流水線
添加代碼源。
在流水線的源區域,單擊添加代碼源。
在添加流水線源面板,選擇代碼源設置為Codeup,單擊添加服務連接。
在新建服務連接對話框,設置服務連接名、服務連接ID、服務授權/證書和使用范圍后,單擊創建。
在添加流水線源面板,配置流水線源相關信息,然后單擊添加。
云效中提供的流水線源有3種:代碼源、Jenkins和Flow流水線。本文以代碼源作為示例。
配置項
描述
選擇代碼源
選擇您業務代碼所在的代碼源,本示例以Codeup為例。
說明不同代碼源需要配置的參數不同,請根據實際界面進行配置。
代碼倉庫
選擇您的代碼倉庫。
默認分支
選擇代碼分支。
開啟代碼源觸發
開啟代碼源觸發功能,將Webhook添加到代碼倉庫,云效流水線Flow會監聽代碼事件,滿足條件時觸發流水線運行。
阿里云Code包含以下兩種觸發事件:
代碼提交: 從本地Push分支到遠程分支(或在代碼管理平臺的Web端進行文件修改)。云效流水線Flow會將Push的目標分支與觸發分支進行匹配,如果匹配成功,則會觸發流水線,并使用Push的目標分支作為流水線運行時使用的分支。
TAG創建:從本地Push Tag到服務端Tag(或在代碼管理平臺的Web端進行tag創建)。云效流水線Flow會將Push的目標Tag名稱與觸發分支進行匹配,如果匹配成功,則會觸發流水線,并使用目標Tag作為流水線運行時使用的代碼版本。
如果使用的是其他代碼倉庫,可能會涉及到其他觸發事件。
Docker鏡像構建。
在流水線的構建區域,單擊Docker鏡像構建,然后展開任務步驟鏡像構建并推送阿里云。
配置任務步驟,配置完成后在頁面右上角,單擊保存并運行。
配置項
描述
步驟名稱
輸入您自定義的步驟名稱,不修改則顯示為默認名稱。
選擇服務連接
選擇任務的服務連接,使云效能使用容器鏡像服務。
說明如果您從未授權過,請單擊添加服務連接完成配置。
地域
在下拉列表中選擇地域。
倉庫
在下拉列表中選擇倉庫。
標簽
Docker鏡像Tag。支持固定參數例如1.0,或者動態參數例如${DATETIME}。
Dockerfile路徑
Dockerfile文件相對于代碼庫根目錄所在路徑,如META/config/Dockerfile或Dockerfile。
ContextPath
docker build命令執行后程序生成路徑。填寫相對于代碼根目錄的路徑,如target。如果不填則為Dockerfile文件所在目錄。
不使用緩存
如果選中,Docker Build將使用--no-cache=true參數進行鏡像構建。
構建參數
運行時以
--build-arg
的形式傳遞到build
命令中的一組參數。單擊添加可以新增并配置構建參數。
部署到EDAS K8s環境。
在部署區域,單擊部署到EDAS K8s。
在編輯面板,配置任務信息,然后單擊右上角保存并運行。
配置項
描述
任務名稱
自定義的任務名稱,不修改則顯示為默認名稱。
構建集群
可為任務選擇不同的構建集群。更多信息,請參見構建集群。
選擇服務連接
選擇任務的服務連接,使云效能在EDAS上部署應用。
說明如果您從未授權過,請單擊添加服務連接完成配置。
地域
選擇EDAS創建應用所在的地域。
應用
選擇EDAS創建的應用。
鏡像
選擇Docker鏡像構建所創建的產出物名稱。
發布策略
支持分批發布和灰度發布。
發布批次
選擇單批次發布,表示不分批發布。
選擇批次,如2批,表示按照指定的批次分批發布。
分批等待時間
相鄰發布批次之間的等待時間。
分批方式
可選擇手動確認或自動確認。例如,如果您需在完成第一批發布時先觀察發布結果再決定后續操作,可選擇手動確認。
任務插件
您可以根據需要通過配置任務插件發送流水線通知。 具體操作,請參見:
步驟四:代碼庫配置Webhook
在代碼庫添加云效流水線Flow的代碼源觸發功能生成的Webhook地址,云效流水線Flow會監聽代碼事件,當滿足觸發事件時會觸發流水線運行。
本文使用Codeup作為代碼庫,在代碼庫配置Webhook的步驟僅作參考,其他代碼庫請以實際為準。
登錄阿里云Codeup控制臺,單擊目標項目。
在左側導航欄,單擊設置。
在設置左側導航欄,單擊Webhooks。
在Webhooks頁面,設置Webhook地址并選中推送事件,然后單擊確定。
結果驗證
開發者上傳應用新版本代碼到代碼庫。
云效流水線Flow監聽代碼事件,當滿足觸發事件時會觸發流水線運行。
如果流水線配置了分批發布,那么在構建任務運行成功后,您可在部署任務的區域執行以下操作。
終止變更:可終止本次流水線的運行。
恢復變更:可繼續下一批的發布。
當前發布單詳情地址:可跳轉到EDAS控制臺查看變更詳情。
日志:可查看流水線的運行日志。
第一批發布完成后,您可以先驗證新版本應用。驗證無誤后,單擊恢復變更,繼續下一批次的發布。
您也可以單擊當前發布單詳情地址,在EDAS控制臺的變更記錄頁面單擊開始下一批,繼續下一批次的發布。
EDAS容器服務K8s和Serverless K8s交流群
如果您在EDAS中使用容器服務K8s集群和Serverless K8s集群過程中有任何疑問或建議,請使用釘釘搜索釘釘群號23197114加入釘釘群進行反饋。