Episode ini membahas otomasi rilis: pipeline CI/CD dengan GitHub Actions dan GitLab CI, build test security scan dan deploy otomatis, artifact registry dan versioning, serta strategi canary release, blue-green deployment, dan rollback.

Kode yang hanya hidup di repository belum berharga — ia berharga saat sampai ke pengguna dengan cara yang aman dan cepat. Episode 21 membahas CI/CD dan release automation untuk aplikasi Spring Boot.
Kalian akan membangun pipeline dengan GitHub Actions dan GitLab CI, mengotomasi build, test, dan security scan, mengelola artefak dan versioning, lalu menerapkan strategi deploy yang berisiko rendah seperti canary, blue-green, dan rollback.
GitHub Actions menjalankan job berdasarkan event. Pipeline khas Spring Boot terdiri dari: checkout, setup JDK, build dan test, lalu deploy. Contoh workflow:
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven
- name: Build dan test
run: ./mvnw clean verifyCache Maven mempercepat eksekusi dengan memakai dependency yang sudah diunduh. Job build ini menjadi gerbang: jika test gagal, tidak ada deploy.
Job deploy berjalan hanya di branch utama setelah build sukses:
deploy:
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Build image dan push
run: ./mvnw spring-boot:build-image
- env:
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
run: docker push registry.example.com/belajar:latestSecret seperti REGISTRY_PASSWORD diambil dari GitHub Secrets — jangan pernah menaruh credential langsung di workflow.
Pipeline produksi yang baik menggabungkan beberapa tahap:
Analisis dependency rentan bisa dijalankan otomatis. Untuk Maven, plugin OWASP Dependency-Check bisa diintegrasikan:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>9.2.0</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>Plugin ini memeriksa setiap dependency terhadap database kerentanan publik (CVE) dan menggagalkan build jika ditemukan celah berbahaya. Gabungkan dengan ghcr.io/anchore/scan-action atau trivy untuk memindai image container setelah dibangun.
Artefak build — jar atau image — disimpan di artifact registry yang terpusat: GitHub Container Registry, Docker Hub, AWS ECR, atau Artifactory. Setiap artefak diberi tag yang tidak ambigu:
docker tag belajar:latest registry.example.com/belajar:1.2.3
docker tag belajar:latest registry.example.com/belajar:sha-abc123Tag versi semantik (1.2.3) menandai rilis, sedangkan tag sha-... menandai setiap build — kombinasi keduanya memungkinkan rollback ke build tertentu.
Terapkan semantic versioning: MAJOR.MINOR.PATCH. Versi otomatis bisa dihasilkan dari commit message (misalnya dengan semantic-release atau GitVersion) sehingga setiap perubahan yang digabung menghasilkan versi baru tanpa campur tangan manual.
Blue-green mempertahankan dua environment: blue (versi lama) dan green (versi baru). Setelah green siap dan lulus readiness probe, traffic dialihkan:
kubectl rollout status deployment/belajar-green
kubectl patch service belajar -p '{"spec":{"selector":{"version":"green"}}}'Perintah kubectl patch service belajar -p '{"spec":{"selector":{"version":"green"}}}' mengalihkan service ke pod green. Rollback semudah mengembalikan selector ke blue — versi lama tetap berjalan.
Canary mengirim sebagian kecil traffic ke versi baru — misalnya 10% — sambil memantau metrik error dan latency. Jika sehat, porsi dinaikkan bertahap hingga 100%. Kubernetes Service Mesh seperti Istio atau Argo Rollouts menangani alokasi traffic ini secara otomatis.
Setiap deploy harus punya jalur mundur. Strategi yang solid:
Rollback bukan pengganti pengujian yang baik — ia adalah jaring pengaman terakhir.
Episode 21 membekali kalian dengan otomasi rilis: pipeline CI/CD dengan GitHub Actions dan GitLab CI, integrasi build, test, security scan, dan deploy otomatis, pengelolaan artefak dengan versioning, serta strategi canary, blue-green, dan rollback.
Inti yang harus dibawa pulang:
needs dan if untuk mengatur urutan job.Di episode 22 selanjutnya kita akan membahas observability dan production support — distributed tracing dengan OpenTelemetry, centralized logging dan structured log correlation, monitoring health dan metrics, serta incident management dengan readiness dan liveness.