Anda dapat membangun pipeline CI otomatis yang efisien, cepat, dan hemat biaya menggunakan EventBridge dan sistem alur kerja terdistribusi Argo Workflows. Pendekatan ini menyederhanakan dan mempercepat pengiriman aplikasi.
Prasyarat
-
Anda telah mengaktifkan EventBridge dan memberikan izin.
-
Anda telah membuat kluster alur kerja Argo.
-
Anda telah membuat sistem file.
-
Anda telah membuat instans Enterprise Edition.
-
Anda telah memberikan izin AliyunAdcpFullAccess kepada RAM user. Untuk informasi selengkapnya, lihat Memberikan izin kepada RAM user.
Cara kerja
Pipeline CI otomatis berbasis event terdiri dari dua bagian:
-
Commit kode ke repositori Git memicu event Git.
-
Sistem CI menjalankan pengujian pra-build, membuat image Docker, dan mendorong image tersebut ke repository image.
Setelah image berhasil dibuat, Anda dapat menggunakan sistem continuous deployment (CD), seperti ACK One GitOps, untuk menyinkronkan tag image baru dengan kluster Kubernetes Anda.
Tutorial ini menggunakan EventBridge sebagai solusi berbasis event karena keunggulannya dalam ketersediaan, kemudahan penggunaan, keamanan, dan skalabilitas. Komponen CI menggunakan Argo Workflows, sebuah proyek lulusan Cloud Native Computing Foundation (CNCF). kluster alur kerja mengelola Argo Workflows secara penuh untuk meningkatkan stabilitas dan observabilitas. Kluster ini juga menyediakan kemampuan operasi dan maintenance (O&M) guna membantu Anda membangun pipeline CI yang lebih besar, lebih cepat, dan lebih hemat biaya.
-
Pengguna melakukan commit kode ke repositori Git.
-
Berdasarkan aturan event yang dikonfigurasi, EventBridge menangkap event Git dan meneruskannya ke kluster alur kerja ACK One, sehingga memicu alur kerja CI.
-
Alur kerja CI pada kluster alur kerja ACK One membuat image Docker dan mendorongnya ke repository image. Anda kemudian dapat menggunakan GitOps untuk secara otomatis menyinkronkan perubahan image tersebut dengan kluster ACK.
Langkah 1: Siapkan lingkungan CI
-
Buat kredensial akses ACR EE dan pasang volume NAS. Untuk informasi selengkapnya, lihat Langkah 1 dan Langkah 2 dalam Membangun Pipeline CI untuk proyek Golang menggunakan kluster alur kerja.
CatatanPastikan namespace-nya sama dengan namespace resource Workflow.
-
Tutorial ini menggunakan proyek echo-server sebagai kode aplikasi contoh. Fork proyek tersebut ke akun GitHub Anda, lalu modifikasi WorkflowTemplate mengikuti petunjuk dalam Mengkloning repositori Git privat dalam Pipeline CI.
Langkah 2: Picu pipeline CI dengan EventBridge
-
Integrasikan EventBridge dengan GitHub. Untuk informasi selengkapnya, lihat Integrasi GitHub.
-
Secara opsional, konfigurasikan aturan event. Kode berikut menyediakan contoh konfigurasi. Untuk informasi selengkapnya tentang cara mengonfigurasi aturan event, lihat Mengelola aturan event.
-
Pola event: Pengaturan berikut hanya memicu perubahan dari branch
release-v1.{ "source": [ "github.event" ], "data": { "body": { "ref": [ "refs/heads/release-v1" ] } } } -
Konfigurasikan target event.
-
Service Type: Pilih Container Service for Kubernetes.
-
Cluster KubeConfig: Masukkan KubeConfig untuk mengakses kluster alur kerja melalui VPC.
-
YAML Configuration: Pilih Template.
-
Parameters: Tambahkan
workflowNameuntuk mengonfigurasi ID event.{ "workflowName": "$.id" } -
Template: Masukkan resource kustom (CR) Workflow CI. Contoh berikut hanya untuk referensi; buat CR sesuai dengan informasi aktual Anda.
PentingKonfigurasi resource mengharuskan Anda secara eksplisit menetapkan
namedannamespace. Anda tidak boleh menggunakangenerateName. Jika resource termasuk dalam namespace defaultdefault, Anda juga harus mendeklarasikannya.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" # Ganti ini dengan alamat repository image kontainer Anda. - 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 -
Network Access: Kami merekomendasikan penggunaan VPC. Pilih VPC, vSwitch, dan security group yang sesuai dengan kluster alur kerja.
-
-
-
Berdasarkan konfigurasi di atas, ketika Anda memodifikasi dan melakukan commit kode ke branch
release-v1repositori GitHub Anda, tindakan ini akan memicu proses otomatis. Anda dapat memverifikasi hal ini dengan cara berikut.-
Lihat jejak event.
Masuk ke Konsol EventBridge. Di panel navigasi sebelah kiri, klik Event Buses.
-
Klik nama event bus Anda. Di panel navigasi sebelah kiri, klik Event trace.
-
Di halaman Event trace, Anda dapat melihat jejak event.
Dalam detail jejak event, ID event adalah
b91299ae-355d-4f66-ac53-8d84e5d84b97, jenis event adalaheventbridge:Events:HTTPEvent, nama event bus adalah ci-test, dan sumber event adalah github.event. Di bagian Event Delivery, aturan ttt mengirimkan event ke targethttps://8.217.97.153:6443. Status pengiriman adalah Succeeded, latensi pengiriman adalah 59 ms, dan respons pengiriman adalah[200]NoMessage.
-
Lihat topologi eksekusi Workflow yang baru dibuat.
Anda dapat menemukan topologi ini di kluster alur kerja. Untuk informasi selengkapnya, lihat Mengaktifkan Argo Server untuk mengakses kluster alur kerja.
Workflow bernama
ci-go-v1-eb-3999580c-1ee4-4e10-a75b-af6e8eddccde. Topologi eksekusi grafik asiklik terarah (DAG)-nya menunjukkan langkah-langkah berikut: git-checkout-pr (Succeeded), run-test (Succeeded), dan build-push-image (Running).
-