Kembali ke Blog

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:

  1. Build image lalu push ke container registry.
  2. Perbarui manifest, atau kubectl set image, atau lewat GitOps (ArgoCD/Flux).
  3. 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.

#cicd#devops#jenkins#git#kubernetes