CI/CD yang Mudah: Otomasi Deploy lewat Git Workflow & Jenkins
Pipeline CI/CD yang rapi membuat deployment aman dan cepat. Perbandingan Git-based workflow (GitHub Actions/GitLab CI) vs Jenkins, plus pola yang saya pakai untuk deploy ke Kubernetes.
Deploy manual itu berisiko: mudah lupa langkah, environment berbeda-beda, dan sulit di-rollback. Dari pengalaman, pipeline CI/CD yang rapi membuat deployment jadi cepat, konsisten, dan aman. Berikut perbandingan dua pendekatan yang paling sering saya pakai.
CI/CD lewat Git Workflow
Dengan GitHub Actions atau GitLab CI, pipeline didefinisikan sebagai kode (YAML) di dalam repo. Setiap push atau merge otomatis memicu alur: build, test, lalu deploy.
name: deploy
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: docker build -t registry/app:${GITHUB_SHA} .
- run: docker push registry/app:${GITHUB_SHA}
- run: kubectl set image deployment/app app=registry/app:${GITHUB_SHA}
Kelebihannya:
- Pipeline as code — ikut ter-version dan mudah di-review.
- Terintegrasi dengan repo — tidak perlu server terpisah.
- Ekosistem luas — ribuan action siap pakai.
CI/CD lewat Jenkins
Jenkins cocok untuk lingkungan enterprise atau on-premise yang membutuhkan kontrol penuh dan plugin khusus. Pipeline ditulis di Jenkinsfile.
Kelebihannya:
- Fleksibel dan matang — plugin untuk hampir semua kebutuhan.
- Self-hosted — cocok untuk kebijakan keamanan yang ketat.
- Cocok untuk pipeline kompleks dengan banyak stage dan tahap approval.
Trade-off-nya: Jenkins perlu perawatan server sendiri — update, plugin, dan keamanan.
Integrasi dengan Kubernetes
Apa pun tool-nya, polanya mirip untuk deploy ke Kubernetes:
- Build image lalu push ke container registry.
- Perbarui manifest, atau
kubectl set image, atau lewat GitOps (ArgoCD/Flux). - Kubernetes menjalankan rolling update dengan nol downtime.
Untuk tim yang serius, saya biasanya mengarahkan ke GitOps: seluruh manifest disimpan di Git, lalu ArgoCD menyinkronkan cluster secara deklaratif. Git menjadi satu-satunya sumber kebenaran.
Praktik Baik
- Simpan kredensial di secret manager, bukan di dalam pipeline.
- Pisahkan environment (staging lalu production) dengan tahap approval.
- Selalu siapkan jalur rollback yang cepat.
- Jalankan test otomatis sebelum deploy.
Kesimpulan
Git workflow unggul dalam kesederhanaan dan integrasi; Jenkins unggul dalam fleksibilitas dan kontrol. Keduanya, jika dipadukan dengan Kubernetes dan GitOps, membuat deployment menjadi urusan sekali klik yang aman dan dapat diprediksi.
Ingin menata pipeline CI/CD atau GitOps untuk tim Anda? Hubungi saya.