Release Process
Standar versioning, changelog, dan deployment
Versioning
Gunakan Semantic Versioning:
MAJOR.MINOR.PATCH
| Bump | Kapan |
|---|---|
| MAJOR | Breaking changes — API tidak backward-compatible |
| MINOR | Fitur baru — backward-compatible |
| PATCH | Bug fix — backward-compatible |
Contoh
v1.0.0— Rilis pertamav1.1.0— Tambah fitur paymentv1.1.1— Fix typo di invoicev2.0.0— Migrasi ke API v2 (breaking)
Release Cycle
flowchart LR
Dev[Develop] -->|Fitur selesai| Freeze[Feature Freeze]
Freeze --> RC[Release Candidate]
RC -->|Testing| QA[QA Pass]
QA --> Prod[Production]
Prod --> Tag[Tag vX.Y.Z]
Tag --> MergeBack[Merge ke develop]
style Dev fill:#3b82f6,color:#fff
style Prod fill:#22c55e,color:#fff
style Tag fill:#a855f7,color:#fff
Tahapan
- Feature Freeze — Semua fitur untuk rilis ini harus sudah di-merge ke
develop - Cut Release Branch —
git checkout -b release/vX.Y.Z - QA Testing — Bug fix saja di release branch, tidak ada fitur baru
- Deploy ke Staging — UAT oleh product owner
- Deploy ke Production — Merge ke
main, tag, deploy - Merge Back — jangan lupa merge perubahan ke
develop
Changelog
Setiap rilis harus punya changelog yang jelas. Gunakan format Keep a Changelog:
# Changelog
## [1.2.0] - 2026-06-05
### Added
- Fitur payment gateway (Midtrans)
- Halaman history transaksi
- Export invoice ke PDF
### Changed
- Redirect setelah login ke halaman sebelumnya
- Upgrade SvelteKit v2 → v3
### Fixed
- Crash saat amount null di webhook
- Typo di email notifikasi (#45)
Deploy Checklist
Sebelum deploy ke production, pastikan:
- Semua test lulus (
npm run test) - Build sukses (
npm run build) - Tidak ada warning/error di console
- API backward-compatible (kalo ada perubahan, bump MAJOR)
- Database migration sudah siap (kalo ada)
- Backup database terbaru
- Monitoring aktif (health check, error tracking)
- Rollback plan: git revert + deploy ulang
Rollback
Jika terjadi masalah setelah deploy:
# 1. Identifikasi commit terakhir yang stable
git log --oneline main
# 2. Revert
git revert HEAD
git push origin main
# 3. Deploy ulang
npm run build
pm2 restart mdweb
Golden rule: Jangan panik. Revert dulu, fix kemudian.