基於事件匯流排EventBridge和分布式工作流程Argo Workflows,可以構建高效、快速、低成本的事件驅動自動化CI Pipeline,大幅簡化和加速應用交付過程。本文介紹如何構建基於事件驅動的自動化CI Pipeline流程。
前提條件
概述
基於事件驅動的自動化CI Pipeline,包含2部分:
基於Git事件的觸發,代碼提交到Git倉庫時,觸發相應的事件。
CI系統運行構建前的測試,構建Docker鏡像,並推送至鏡像倉庫。
鏡像構建成功後,可使用CD系統(如ACK One GitOps)將新的Image Tag同步到Kubernetes叢集中。
在本實踐中,事件驅動方案採用了在可用性、易用性、安全性、可擴充性等多方面具有優勢的事件匯流排EventBridge,CI部分基於CNCF畢業專案Argo Workflows來構建。ACK One工作流程叢集全託管Argo Workflows,提升了穩定性、可觀測等效能,提供營運能力,協助您實現更大規模、具有更快的運行速度和更低成本的CI Pipeline。
使用者向Git倉庫提交代碼。
EventBridge根據配置的規則,捕獲Git事件並將其傳遞給ACK One工作流程叢集,從而觸發CI工作流程的執行。
基於ACK One工作流程叢集的CI工作流程構建Docker Image,並推送至鏡像倉庫中。之後可通過GitOps自動同步相應鏡像變化至ACK叢集。
步驟一:在ACK One工作流程叢集中準備CI環境
建立ACR EE訪問憑證並掛載NAS儲存卷。具體操作,請參見基於工作流程叢集構建Golang專案的CI Pipeline中的步驟一和步驟二。
說明請確保命名空間與Workflow資源保持一致。
Apps Code Repo樣本為echo-server專案,請將其Fork到您自己的GitHub帳號下,並參考在CI Pipeline中Clone私人Git倉庫來修改WorkflowTemplate。
步驟二:使用EventBridge實現Git事件驅動CI Pipeline
事件匯流排EventBridge與GitHub進行整合對接。具體操作,請參見GitHub整合。
配置事件規則(可選),以下為本樣本配置內容。詳細配置事件規則的方式,請參見管理事件規則。
事件模式:如下設定為只觸發來自
release-v1
分支的變更。{ "source": [ "github.event" ], "data": { "body": { "ref": [ "refs/heads/release-v1" ] } } }
配置事件目標。
服務類型:選擇Container ServiceKubernetes。
叢集設定檔 KubeConfig:輸入ACK One工作流程叢集的KubeConfig。
YAML配置:本樣本選擇模板。
變數:增加
workflowName
,配置事件ID。{ "workflowName": "$.id" }
模板:填入Workflow CI CR。以下樣本僅供參考,請根據您的實際資訊構建CR。
重要資源配置的要求是必須明確設定
name
和namespace
,不能使用generateName
。如果資源屬於預設命名空間default
,也必須聲明。apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: name: ci-go-v1-eb-${workflowName} namespace: default labels: workflows.argoproj.io/workflow-template: ackone-ci spec: arguments: parameters: - name: repo_url value: https://github.com/ivan-cai/echo-server.git - name: repo_name value: echo-server - name: target_branch value: release-v1 - name: container_image value: "YOUR-IMAGE-REGISTRY-ADDRESS" # 容器鏡像庫的地址,請根據您的實際資訊替換. - name: container_tag value: "v1.0.0" - name: dockerfile value: ./Dockerfile - name: enable_suffix_commitid value: "true" - name: enable_test value: "true" workflowTemplateRef: name: ci-go-v1 clusterScope: true
網路訪問:本樣本選擇公網。
根據上述配置,當您在GitHub倉庫的
release-v1
分支上進行代碼修改並提交時,該操作會觸發自動化流程,您可以通過以下方式驗證。查看事件軌跡。
- 登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排。
單擊對應事件匯流排名稱,在左側導覽列,單擊事件追蹤。
進入事件追蹤頁面,可查看對應事件軌跡。
查看建立的Workflow的執行拓撲。
在ACK One工作流程叢集查看建立的Workflow的執行拓撲。具體操作,請參見開啟Argo Server訪問工作流程叢集。