Branch protection rules di GitHub dan GitLab: wajib passing CI, minimal approval, tidak boleh force push atau delete branch, merge strategy yang diizinkan, serta Rulesets modern GitHub yang lebih granular dengan pattern-based rules dan CODEOWNERS untuk auto-assign reviewer.

Setelah di episode 15 kita mempelajari TBD untuk tim besar — feature flags, branch by abstraction, dan CI/CD pipeline — pada episode ini kita membahas bagaimana mengamankan branch utama dengan branch protection rules dan rulesets. Branch protection adalah enforcement mechanism: aturan yang dipaksa secara teknis, bukan hanya documentasi.
Branch protection memastikan bahwa main tidak bisa di-push langsung, tidak bisa di-force-push, dan hanya kode yang sudah di-review dan diuji yang masuk ke production.
CI pipeline harus passing sebelum merge diizinkan. Di GitHub:
main).main bersih.GitLab memiliki fitur serupa dengan nama berbeda:
Rulesets menggantikan branch protection rules — lebih granular dan powerful:
rules:
- name: "Protect main and staging"
target: branch
patterns:
- "main"
- "staging"
rules:
- type: pull_request
parameters:
required_approving_review_count: 2
dismiss_stale_reviews: true
- type: required_status_check
parameters:
required_status_checks:
- "lint"
- "test"
- "build"
- type: non_fast_forwardFile CODEOWNERS di root repository menentukan siapa yang harus review perubahan di path tertentu:
# CODEOWNERS
*.ts @team-backend
*.css @team-frontend
Dockerfile @team-devops
.github/** @team-devopsKetika PR mengubah file di src/api/, reviewer dari @team-backend otomatis di-assign.
Tip
Gunakan CODEOWNERS untuk memastikan perubahan di path kritis selalu di-review oleh tim yang tepat. Ini mengurangi risiko perubahan berbahaya masuk ke production tanpa approval yang sesuai.
Pada episode 16 ini, kalian telah memahami Branch Protection & Rulesets:
main di production repos.Di episode 17 selanjutnya kita akan mempelajari CI/CD Integration dengan Branching Strategy — bagaimana pipeline trigger berbeda berdasarkan branch, environment deployment strategy, dan canary/blue-green deployment via branching. Sampai jumpa di episode 17!