Kluster alur kerja menyediakan Argo Workflows yang sepenuhnya dikelola berdasarkan proyek open-source Argo Workflows. Kluster ini sangat elastis, melakukan penskalaan otomatis, serta tidak memerlukan operasi atau pemeliharaan, sehingga Anda dapat membangun pipeline CI yang lebih sederhana, hemat biaya, dan efisien. Topik ini menjelaskan cara membangun pipeline CI untuk proyek Golang menggunakan kluster alur kerja.
Ikhtisar solusi
Saat membangun pipeline CI dengan kluster alur kerja, Anda terutama menggunakan BuildKit untuk membangun dan mendorong gambar kontainer serta BuildKit Cache untuk mempercepat pembuatan gambar. Menyimpan cache Go mod pada NAS mempercepat perintah go test dan go build, sehingga secara signifikan mempercepat seluruh pipeline CI.
Template alur kerja preset
Kluster alur kerja mencakup template alur kerja CI preset (ClusterWorkflowTemplate) bernama ci-go-v1. Template ini memanfaatkan BuildKit Cache dan menyimpan cache Go mod pada NAS untuk mempercepat pipeline CI secara signifikan.
Anda dapat langsung menggunakan template preset ini atau menyesuaikannya untuk membuat template alur kerja CI sendiri.
Template alur kerja CI preset mencakup langkah-langkah berikut:
Git clone & checkout
Meng-clone repositori Git dan melakukan checkout branch target.
Mengambil ID commit dan menambahkannya sebagai akhiran pada tag gambar selama proses build.
Jalankan go test
Menjalankan semua kasus uji di repositori Git (proyek Go) secara default.
Anda dapat menggunakan parameter alur kerja
enable_testuntuk mengontrol apakah langkah ini dijalankan atau tidak.Cache Go mod disimpan dalam direktori
/pkg/modpada NAS untuk mempercepat perintahgo testdan perintahgo buildberikutnya.
Build & push image
Menggunakan BuildKit untuk membangun dan mendorong gambar kontainer, serta memanfaatkan cache jenis registri dari BuildKit Cache untuk mempercepat pembuatan gambar.
Secara default, tag gambar menggunakan format
{container_tag}-{commit_id}. Anda dapat mengontrol penambahan ID commit melalui parameter saat mengirimkan alur kerja.Ketika gambar baru didorong, gambar dengan tag
latestjuga didorong, menimpa gambar yang ada sebelumnya.
Prasyarat
Buat instans Container Registry Enterprise Edition (ACR EE).
Jika Anda menggunakan repositori Git privat, Anda harus mengonfigurasi alur kerja untuk meng-clone-nya.
Langkah 1: Buat kredensial akses Container Registry
Dapatkan file kubeconfig untuk kluster dan gunakan kubectl untuk terhubung ke kluster.
Konfigurasikan kredensial akses untuk instans Container Registry Enterprise Edition. Jika Anda menggunakan nama domain VPC untuk akses, pastikan kluster dan repositori Container Registry berada dalam VPC yang sama. Jika Anda menggunakan nama domain publik, konfigurasikan kontrol akses publik.
Ganti
USER_NAME:PASSWORDdalam perintah berikut dengan kredensial akses instans Container Registry Enterprise Edition Anda. Kemudian, jalankan perintah tersebut untuk membuat Secret di kluster alur kerja agar dapat digunakan oleh BuildKit.Secret dan volume NAS yang dimount harus berada dalam namespace yang sama dengan alur kerja yang Anda kirimkan.
kubectl create secret generic docker-config --from-literal="config.json={\"auths\": {\"<span class="hljs-variable">$repositoryDomain\": {\"auth\": \"$(echo -n <span class="var-span" contenteditable="true" data-var="USER_NAME">USER_NAME:PASSWORD|base64)</span>\"}}}"</span>
Langkah 2: Mount volume NAS
Gunakan volume NAS untuk berbagi data antar tugas alur kerja, seperti informasi repositori yang telah di-clone, serta untuk menyimpan cache Go mod, sehingga mempercepat perintah go test dan go build.
Masuk ke Konsol NAS.
Pada panel navigasi kiri, pilih .
Pada halaman File System List, temukan sistem file target lalu klik Manage di kolom Actions.
Pada halaman detail sistem file, klik tab Mount Targets. Di bagian Mount Target, lihat dan catat titik mount NAS.
Simpan kode contoh berikut sebagai pv-nas.yaml. Ganti MOUNT_POINT dengan titik mount NAS Anda. Lalu, jalankan perintah
kubectl apply -f pv-nas.yamluntuk membuat volume.apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 100Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas # Harus sama dengan nama PV. volumeAttributes: server: MOUNT_POINT path: "/" mountOptions: - nolock,tcp,noresvport - vers=3 --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi selector: matchLabels: alicloud-pvname: pv-nas
Langkah 3: Mulai alur kerja
Konsol
Masuk ke Konsol Kluster Argo Workflow.
Pada halaman Cluster Information, klik tab Basic Information. Di bagian Common Operations, klik Workflow Console (Argo).
Pada panel navigasi kiri UI Argo, klik Cluster Workflow Templates, lalu klik nama template preset, ci-go-v1.

Di pojok kiri atas halaman detail template, klik + SUBMIT. Pada panel yang muncul, masukkan parameter yang diperlukan, lalu klik + SUBMIT di bagian bawah panel.
Untuk informasi tentang parameter, lihat deskripsi parameter. Atur parameter sesuai nilai spesifik Anda.

Setelah pengiriman, Anda dapat melihat status alur kerja di halaman Workflows:

Argo CLI
Perbarui nilai parameter sesuai konfigurasi Anda berdasarkan deskripsi parameter. Simpan kode contoh berikut sebagai
workflow.yaml. Lalu, jalankan perintahargo submit workflow.yamluntuk mengirimkan alur kerja.apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: ci-go-v1- 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: 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