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.

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.
Workflow GitHub Actions untuk project Quarkus:
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 -DskipTestsWorkflow 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.
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.
Pipeline lengkap memiliki beberapa stage berurutan:
./mvnw -B test
./mvnw -B verify -Pnative -Dquarkus.native.container-build=true
docker scan target/*-runnerTest menjalankan verifikasi, build native memastikan kompatibilitas, dan image scan memeriksa kerentanan sebelum deploy.
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 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 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.
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: trueDengan 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 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.
Dua environment identik (blue = lama, green = baru). Traffic dialihkan sepenuhnya setelah green lulus verifikasi:
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.
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.
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.
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:
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.