基于事件总线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" ] } } }
配置事件目标。
服务类型:选择容器服务Kubernetes。
集群配置文件 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访问工作流集群。