Belajar Quarkus - CI/CD & GitOps
Episode 21 of 24

Belajar Quarkus - CI/CD & GitOps

Episode ini membahas pipeline CI/CD untuk Quarkus dengan GitHub Actions atau GitLab CI, otomasi build, test, scan, dan deploy, integrasi GitOps dengan Argo CD atau Flux, serta canary release, blue-green deployment, dan rollback.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Deploy manual adalah sumber kesalahan terbesar di produksi. Satu perintah yang terlewat, satu environment yang berbeda, dan aplikasi rusak di tangan pengguna. CI/CD mengotomatisasi seluruh perjalanan dari commit sampai produksi.

Episode 21 membahas pipeline CI/CD untuk Quarkus: GitHub Actions dan GitLab CI, otomasi build, test, scan, dan deploy, integrasi GitOps dengan Argo CD atau Flux, serta strategi canary release, blue-green deployment, dan rollback.

Pipeline CI/CD untuk Quarkus

GitHub Actions

Workflow GitHub Actions untuk project Quarkus:

Workflow GitHub Actions
name: Build Quarkus
on:
  push:
    branches: [main]
  pull_request:
 
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '21'
      - name: Cache Maven
        uses: actions/cache@v4
        with:
          path: ~/.m2
          key: maven-${{ hashFiles('**/pom.xml') }}
      - name: Test
        run: ./mvnw -B test
      - name: Package
        run: ./mvnw -B package -DskipTests

Workflow ini menjalankan test dan packaging setiap kali ada commit ke main atau pull request. actions/setup-java@v4 memasang JDK 21; cache Maven mempercepat build berikutnya.

GitLab CI

Padanan di GitLab CI memakai .gitlab-ci.yml dengan stage test dan build, keduanya berjalan di image maven:3.9-eclipse-temurin-21. Kunci konsistensi: versi Java di CI harus sama dengan yang dipakai developer lokal.

Build, Test, Scan, dan Deploy Automation

Stage Build dan Test

Pipeline lengkap memiliki beberapa stage berurutan:

Urutan stage pipeline
./mvnw -B test
./mvnw -B verify -Pnative -Dquarkus.native.container-build=true
docker scan target/*-runner

Test menjalankan verifikasi, build native memastikan kompatibilitas, dan image scan memeriksa kerentanan sebelum deploy.

Image Scan

Container image perlu di-scan untuk kerentanan. Di GitHub Actions, tambahkan step dengan aquasecurity/trivy-action yang memeriksa image dan memblokir pipeline jika ditemukan kerentanan di atas threshold. Scan adalah gerbang keamanan antara build dan deploy.

Deploy Automation

Deploy otomatis ke Kubernetes setelah semua stage lulus: set image dengan kubectl set image deployment/belajar-quarkus belajar-quarkus=quay.io/example/belajar-quarkus:<sha-commit> lalu pantau dengan kubectl rollout status. Image ditag dengan SHA commit sehingga setiap deploy bisa ditelusuri ke source code spesifik.

GitOps Integration dengan Argo CD atau Flux

Konsep GitOps

GitOps menjadikan repository Git sebagai source of truth untuk infrastruktur. Argo CD atau Flux terus membandingkan state di Git dengan state di cluster, lalu menyinkronkan perbedaan.

Application Argo CD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: belajar-quarkus
  namespace: argocd
spec:
  destination:
    namespace: production
    server: https://kubernetes.default.svc
  source:
    repoURL: https://github.com/example/infra
    path: apps/belajar-quarkus
    targetRevision: main
  syncPolicy:
    automated:
      selfHeal: true

Dengan selfHeal: true, Argo CD mengembalikan cluster ke state Git jika ada perubahan manual. Deploy bukan lagi "menjalankan perintah", melainkan "mengubah Git dan menunggu sinkronisasi".

Flux

Flux menawarkan pendekatan serupa dengan Kustomization: mendeklarasikan interval, path ke manifest, dan sourceRef ke repository Git. Baik Argo CD maupun Flux memberi audit trail lengkap: setiap perubahan environment tercatat sebagai commit Git.

Canary Release, Blue-Green Deployment, dan Rollback

Blue-Green Deployment

Dua environment identik (blue = lama, green = baru). Traffic dialihkan sepenuhnya setelah green lulus verifikasi:

Alihkan traffic ke green
kubectl apply -f deploy/green/deployment.yml
kubectl rollout status deployment/belajar-quarkus-green
kubectl patch svc belajar-quarkus -p '{"spec":{"selector":{"version":"green"}}}'

Jika bermasalah, alihkan kembali ke blue dalam hitungan detik — rollback instant tanpa redeploy. Pantau progres dengan kubectl rollout status deployment/belajar-quarkus-green.

Canary Release

Traffic dibagi bertahap: 5% ke versi baru, lalu 25%, 50%, dan seterusnya. Service mesh (episode 14) atau tool seperti Argo Rollouts memudahkan ini dengan mendeklarasikan steps seperti setWeight dan pause dalam durasi tertentu. Canary meminimalkan risiko: masalah terdeteksi pada sebagian kecil traffic sebelum semua pengguna terpengaruh.

Rollback

Dengan GitOps, rollback sederhana: revert commit Git. Dengan image tag, rollback adalah men-set image ke versi sebelumnya. Selalu siapkan runbook rollback sebelum release — dan uji prosesnya.

Penutup

Episode 21 mengotomatisasi perjalanan aplikasi ke produksi: memahami pipeline CI/CD Quarkus di GitHub Actions dan GitLab CI, otomasi build, test, scan, dan deploy, integrasi GitOps dengan Argo CD dan Flux, serta strategi canary, blue-green, dan rollback.

Inti yang harus dibawa pulang:

  • CI/CD mengotomatisasi test, build, scan, dan deploy.
  • JDK di CI harus konsisten dengan versi developer lokal.
  • Image scan dengan Trivy menjadi gerbang keamanan sebelum deploy.
  • GitOps menjadikan Git sebagai source of truth infrastruktur.
  • Blue-green deployment memberi rollback instan.
  • Canary release membagi traffic bertahap untuk mengurangi risiko.
  • Rollback harus diuji, bukan hanya direncanakan.

Di episode 22 selanjutnya kita akan membahas observability dan production support — distributed tracing dengan OpenTelemetry, centralized logging dan correlation IDs, metrics, health, dan alerting production-ready, serta incident response, tracing errors, dan service troubleshooting.

Belajar Quarkus - CI/CD & GitOps | Belajar Quarkus