CI CD Pipeline - Lumina-Enterprise-Solutions/prism-auth-service GitHub Wiki

🔄 CI/CD Pipeline

Kami menggunakan GitHub Actions untuk mengotomatiskan proses Continuous Integration (CI) dan Continuous Deployment (CD).

Continuous Integration (CI)

  • File Konfigurasi: .github/workflows/ci.yml
  • Pemicu (Triggers):
    • Push ke branch main, develop.
    • Push ke branch dengan prefix feature/, bugfix/, hotfix/.
    • Setiap Pull Request yang menargetkan main atau develop.

Alur Kerja Job build-and-test

Job ini berjalan di ubuntu-latest dan melakukan langkah-langkah berikut:

  1. Setup Services: Sebelum job dimulai, GitHub Actions akan menyiapkan service containers untuk postgres:17-alpine dan redis:7-alpine. Ini memungkinkan integration test untuk berjalan dengan dependensi nyata.
  2. Checkout Repository: Mengunduh kode dari repositori.
  3. Set up Go: Menginstal versi Go yang ditentukan (1.24).
  4. Cache Go Modules: Menyimpan cache dependensi Go untuk mempercepat build di masa mendatang.
  5. Download Go modules: Menjalankan go mod download.
  6. Run Linter: Menjalankan golangci-lint untuk memastikan kode mematuhi standar gaya dan praktik terbaik.
  7. Run Unit Tests: Menjalankan go test -v -short ./... untuk mengeksekusi tes unit yang cepat.
  8. Run Integration Tests: Menjalankan skrip ./scripts/test-integration.sh. Skrip ini mengatur variabel lingkungan yang diperlukan agar tes dapat terhubung ke service container (Postgres dan Redis).
  9. Build Application: Mengompilasi aplikasi Go menjadi binary untuk memastikan tidak ada error kompilasi.
  10. Build Docker Image: Membangun image Docker menggunakan Dockerfile untuk memvalidasi bahwa proses containerization berhasil.

Continuous Deployment (CD) / Release

  • File Konfigurasi: .github/workflows/release.yml
  • Pemicu (Triggers):
    • Hanya berjalan ketika sebuah tag Git baru dengan format v* (misalnya, v1.2.0) di-push ke repositori.

Alur Kerja Job release-and-publish

Job ini bertanggung jawab untuk merilis versi baru dari layanan:

  1. Checkout Repository: Mengunduh kode.
  2. Log in to GHCR: Melakukan login ke GitHub Container Registry menggunakan GITHUB_TOKEN yang disediakan secara otomatis.
  3. Extract Docker Metadata: Menghasilkan tag yang relevan untuk image Docker (misalnya, latest, v1.2.0, v1.2).
  4. Set up QEMU & Buildx: Menyiapkan environment build Docker yang lebih canggih.
  5. Build and Push Docker Image: Membangun image Docker menggunakan Dockerfile dan mendorongnya ke GitHub Container Registry dengan semua tag yang telah dihasilkan.
  6. Create GitHub Release: Membuat entri rilis baru di halaman "Releases" GitHub, lengkap dengan catatan rilis yang dibuat secara otomatis dari commit messages sejak rilis terakhir.

Kembali ke Halaman Utama