Argo Workflows提供简单易用的接口和工具,您可以通过YAML定义工作流,快速设置和配置CI流水线。您可以在集群中实现任务的并行执行,动态扩展所需的计算资源,并提高CI流水线的运行效率。
功能介绍
Argo Workflows构建CI Pipeline时,主要使用BuildKit实现容器镜像的构建和推送,并使用BuildKit Cache加速镜像的构建。使用NAS存储Go mod cache,可加速go test
和go build
运行过程,最终大幅加速CI Pipeline的流程。
预置工作流模板说明
您可以直接使用预置模板,也可以基于预置模板自定义自己的CI工作流模板。本示例创建名为ci-go-v1
的CI工作流模板(ClusterWorkflowTemplate),使用BuildKit Cache和NAS存储Go mode cache,以加速CI Pipeline的流程。
操作步骤
本文以公共Git仓库为例为您介绍构建CI Pipeline的操作。如果您在工作流的CI Pipeline中使用的是私有Git仓库,则需要在CI流程中先成功Clone该私有仓库。具体的Clone操作,请参见在CI Pipeline中Clone私有Git仓库。
保存容器镜像访问凭证的Secret和挂载的NAS存储卷都需要与最终提交的工作流在同一个命名空间下。
步骤一:创建ACR EE访问凭证
ACR EE访问凭证主要用于BuildKit推送镜像。
为ACR EE配置访问凭证。具体操作,请参见配置访问凭证。
执行如下命令,在集群中创建Secret保存ACR EE的密码,供BuildKit使用。
说明$repositoryDomain
:替换为ACR镜像仓库地址。$username
:替换为ACR镜像仓库用户名。$password
:替换为ACR镜像仓库密码。kubectl create secret -n argo generic docker-config --from-literal="config.json={\"auths\": {\"$repositoryDomain\": {\"auth\": \"$(echo -n $username:$password|base64)\"}}}"
步骤二:挂载NAS存储卷
使用NAS存储卷后,支持在工作流的各任务之间共享数据,例如Clone的代码仓库信息,还用于存储Go mod cache,用于加速CI Pipeline中的go test
和go build
过程。
请参见使用存储卷挂载NAS存储卷。
步骤三:基于模板启动工作流
控制台
登录Argo控制台。在左侧导航栏单击Cluster Workflow Templates,然后单击ci-go-v1预置模板名称。
在模板详情页左上角单击+ SUBMIT,然后在弹出的面板中填写相关参数,并在面板下方单击+ SUBMIT。
请参见前文的模板参数说明将参数值设置为您实际使用的参数值。
操作完成后,在Workflows详情页查看工作流运行情况:
Argo CLI
使用以下内容创建
workflow.yaml
文件,按照模板参数说明将参数值修改为您实际使用的参数值。apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: ci-go-v1- labels: workflows.argoproj.io/workflow-template: ackone-ci namespace: argo 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: main - name: container_image value: "test-registry.cn-hongkong.cr.aliyuncs.com/acs/echo-server" - 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
执行以下命令提交工作流。
argo submit workflow.yaml
联系我们
若您有任何产品建议或疑问,请加入钉钉群(钉钉群号:35688562)联系我们。