Menghubungkan ArgoCD dengan ekosistem CI/CD: Tekton, Jenkins dan Jenkins X, GitHub Actions, GitLab CI/CD, migrasi dari FluxCD, integrasi Terraform, policy engine, dan service catalog Backstage.

Di episode 29 sebelumnya infrastruktur pun sudah masuk ke dalam Git. Namun GitOps tidak hidup di ruang hampa — di hampir semua organisasi, ArgoCD berdampingan dengan tool CI yang sudah ada: Jenkins yang berusia sepuluh tahun, GitHub Actions yang baru dipasang, Tekton di dalam cluster, atau GitLab yang memayungi semuanya. Pertanyaan klasiknya: bagaimana tool build dan tool deploy berkomunikasi tanpa mengaburkan tanggung jawab?
Episode ini menjawabnya dengan satu prinsip yang sudah kita pegang sejak episode 18: CI membangun dan menguji; CD (GitOps) menerapkan dari Git. Semua integrasi di episode ini hanyalah varian dari prinsip itu — CI menulis hasilnya ke Git, ArgoCD membaca Git. Mari lihat bagaimana setiap tool populer melakukan hal ini.
Tekton adalah CI/CD native Kubernetes berbasis CRD: Pipeline, Task, dan PipelineRun. Integrasi paling bersih adalah: Tekton membangun image, memperbarui manifest di repo Git, lalu ArgoCD mendeteksi dan sync.
Pipeline Tekton bertanggung jawab atas sisi build:
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: build-and-update
spec:
tasks:
- name: build
taskRef:
name: buildah
- name: update-manifest
runAfter: [build]
taskRef:
name: git-update-manifestAda dua pola memicu ArgoCD dari Tekton:
argocd app sync lewat task kustom. Lebih cepat, tetapi memberi CI kekuatan deploy — gunakan hanya jika kalian ingin kontrol eksekusi di CI.Cara Tekton mengkomunikasikan hasil build ke Git adalah lewat results. Build menyimpan digest image ke results, task berikutnya membaca dan mengupdate deployment.yaml di repo manifest. Digest (bukan tag) menjaga reprodusibilitas — ini yang sudah kita pelajari di episode 16 bersama Image Updater.
Jenkins X dirancang dengan GitOps sebagai intinya: setiap environment memiliki repo manifest sendiri, dan promotion adalah PR ke repo environment. Integrasinya dengan ArgoCD sederhana: ArgoCD membaca repo environment dan melakukan sync. Jika kalian sudah memakai Jenkins X, integrasi ArgoCD hampir tanpa usaha — tinggal daftarkan repo environment sebagai Application.
Untuk Jenkins klasik, pola yang direkomendasikan: Jenkins hanya untuk build, dan tidak men-deploy langsung. Alih-alih, Jenkins melakukan:
stage('update manifests') {
sh 'kustomize edit set image api=registry.example.com/api:${BUILD_TAG}'
sh 'git add . && git commit -m "release api: ${BUILD_TAG}"'
sh 'git push origin main'
}Agar sync tidak menunggu polling, konfigurasikan webhook dari repo Git ke ArgoCD. Untuk GitHub/GitLab ini tinggal di UI ArgoCD (Settings → Repositories → webhook); ArgoCD menyediakan endpoint yang menerima event dan langsung menjadwalkan refresh + sync. Dengan webhook, perubahan manifest sampai ke cluster dalam hitungan detik.
Tip
Jangan pernah membiarkan Jenkins men-deploy langsung ke cluster. Begitu deploy lewat kubectl apply dari Jenkins, Git tidak lagi menjadi satu-satunya sumber kebenaran — dan kalian kehilangan audit, rollback dari history, serta self-healing. Batasi Jenkins ke build + commit; biarkan ArgoCD yang menerapkan.
GitHub Actions adalah pilihan paling populer untuk repo yang tinggal di GitHub. Pola standarnya:
| Pekerjaan | Peran | Output |
|---|---|---|
build | Build dan push image | Image di registry |
update-manifest | Update tag/digest di repo manifest | Commit baru |
preview (opsional) | Buat PR preview (episode 11) | Environment ephemeral |
status-check | Verifikasi sync berhasil | Status check GitHub |
Workflow manifest update menggunakan token deploy-bot dengan izin menulis ke repo manifest:
- name: Update manifests
run: |
cd deploy
kustomize edit set image api=${{ inputs.image }}
git add .
git commit -m "chore: bump api to ${{ inputs.tag }}"
git push
env:
GITHUB_TOKEN: ${{ secrets.MANIFEST_REPO_TOKEN }}Dua pola yang membuat GitHub Actions unggul: PR automation (bot membuka PR yang memperbarui manifest, direview dulu sebelum merge — kontrol penuh untuk production) dan status checks (action menunggu ArgoCD menandai aplikasi Healthy sebelum laporan pipeline sukses). ArgoCD juga punya integration dengan GitHub Checks lewat argocd-notifications (episode 17), sehingga status deployment tampil langsung di halaman PR.
GitLab menawarkan pendekatan yang lebih terpadu.
Auto DevOps men-deploy dengan push model bawaan — tetapi untuk memakai ArgoCD, kalian menonaktifkan deployment bawaan GitLab dan menggantinya dengan langkah yang memperbarui repo manifest (persis pola Jenkins). GitLab environment di sisi GitLab tetap dipakai untuk melacak deployment, sementara eksekusi nyata ada di ArgoCD.
GitLab menyediakan repository mirroring dan deploy tokens yang nyaman untuk ArgoCD. Yang perlu kalian lakukan: buat project manifest terpisah, atur CI .gitlab-ci.yml untuk update manifest setelah build, daftarkan repo ke ArgoCD, dan pasang webhook (GitLab → ArgoCD). Environment management di GitLab (environment: keyword) memberi tampilan deployment tanpa mengganggu model GitOps.
Jika kalian datang dari Flux: ArgoCD dan Flux sama-sama pull-based. Perbedaan konseptual utama: Flux menggunakan Kustomization objects dan memakai eventual consistency versi Git; ArgoCD memakai Application dengan status yang lebih eksplisit (Sync + Health). Migrasi bertahap: daftarkan repo yang sama di ArgoCD, buat Application untuk Kustomization yang sama, freeze Flux, lalu hapus Flux. Git yang sama = tidak ada perubahan manifes sama sekali.
Seperti dibahas di episode 29: Terraform untuk resource non-Kubernetes dengan pipeline, Crossplane untuk resource yang butuh reconciliation terus. Integrasi ArgoCD-Terraform yang sering dipakai: ArgoCD mengelola sebuah Operator/controller yang menjalankan Terraform (misalnya via pipeline hook di episode 13) untuk kasus di mana state harus dipertahankan.
Policy engine adalah gerbang keamanan di antara Git dan cluster (episode 28). Kyverno memvalidasi manifest saat ArgoCD menerapkannya di cluster. OPA/Gatekeeper bekerja serupa lewat ConstraintTemplate. Keduanya memastikan: tidak ada image latest, tidak ada container yang berjalan sebagai root, semua resource punya limits. Karena ArgoCD terus mencoba sync, manifest yang melanggar policy akan terus ditolak — dan akan terlihat sebagai error yang jelas di UI.
Backstage (Spotify) menjadi katalog layanan dan Internal Developer Portal — jembatan antara "apa yang dimiliki tim" dan "bagaimana deploy-nya". Integrasinya dengan ArgoCD lewat plugin @backstage/plugin-argocd: developers melihat status aplikasi ArgoCD langsung dari halaman katalog Backstage. Ini langkah pertama menuju Internal Developer Platform yang akan kita bahas di episode 35.
Episode ini menghubungkan ArgoCD dengan ekosistemnya: Tekton dengan pipeline dan pemicu Git-native, Jenkins dan Jenkins X dengan pola "CI tidak pernah deploy langsung", GitHub Actions dengan workflow manifest update dan status checks, GitLab dengan Auto DevOps dan environment management, serta tool pendukung lain: migrasi FluxCD, integrasi Terraform, policy engine, dan katalog Backstage.
Poin yang harus kalian bawa:
Ekosistem sudah tersambung; sekarang kalian perlu menyesuaikan pola dengan cloud tempat kalian berjalan. Di episode 31 selanjutnya kita membahas cloud provider specific patterns — AWS EKS, GCP GKE, Azure AKS, dan pola multi-cloud dengan abstraksi cloud-agnostic. Sampai jumpa di episode 31!