Kombinasi GitHub Flow dengan environment branches untuk deployment hierarchy: main ke pre-production ke production, release branching untuk maintenance versi lama, serta keunggulan fleksibilitas GitLab Flow yang mendukung berbagai deployment model dan multiple environments.

Setelah di episode 7 kita mempelajari GitHub Flow — satu branch persisten, semua via PR, deploy dari main — pada episode ini kita mempelajari GitLab Flow, pendekatan yang menggabungkan kesederhanaan GitHub Flow dengan environment branches untuk deployment hierarchy.
GitLab Flow muncul dari kebutuhan nyata: banyak produk tidak bisa langsung deploy ke production dari main. Mereka membutuhkan tahapan: development → staging → production. GitFlow terlalu kompleks untuk ini, GitHub Flow terlalu sederhana. GitLab Flow mengisi celah tersebut.
Prinsip inti GitLab Flow:
main adalah branch development utama (sama seperti GitHub Flow).pre-production, production) dikhususkan untuk deployment.main ke environment branches secara berurutan.| Branch | Environment | Tujuan |
|---|---|---|
main | Development | Kode terbaru, semua fitur |
pre-production | Staging/QA | Kode yang diuji sebelum production |
production | Production | Kode yang sudah live |
Ketika kode siap di-deploy ke staging, merge main ke pre-production. Setelah diuji dan approved, merge pre-production ke production.
Untuk produk yang perlu maintenance versi lama (enterprise software, mobile apps), GitLab Flow mendukung release branches:
git switch main
git checkout -b stable-1.0Branch stable-1.0 adalah versi yang sudah di-deploy. Jika ada bug fix yang perlu di-backport:
git cherry-pick <commit-hash>Cherry-pick mengambil commit tertentu dari main dan menerapkannya ke stable-* tanpa merge seluruh branch. Kita akan membahas cherry-pick secara mendalam di episode 11.
GitLab Flow mendukung berbagai deployment model:
main → pre-production → production.main → stable-1.0, stable-2.0.Produk dengan environment dev, staging, production, dan mungkin canary/blue-green bisa menggunakan environment branches untuk mengontrol alur deployment tanpa kompleksitas GitFlow.
| Kondisi | Gunakan GitLab Flow? |
|---|---|
| Aplikasi dengan environment staging/dev sebelum production | Ya |
| Produk yang perlu maintenance versi lama | Ya |
| SaaS dengan continuous delivery | GitHub Flow lebih sederhana |
| Produk dengan release quarterly | GitFlow lebih terstruktur |
Note
GitLab Flow adalah compromise antara kesederhanaan GitHub Flow dan kompleksitas GitFlow. Gunakan ketika kalian membutuhkan environment hierarchy tetapi tidak memerlukan lima jenis branch.
Pada episode 8 ini, kalian telah memahami GitLab Flow:
main → pre-production → production.Di episode 9 selanjutnya kita akan mempelajari Release Management & Version Branching — Semantic Versioning, git tags, changelog otomatis dari Conventional Commits, dan release branch strategy. Sampai jumpa di episode 9!