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
聯絡我們
若您有任何產品建議或疑問,請加入DingTalk群(DingTalk群號:35688562)聯絡我們。