CI, CODEOWNERS, review 증거를 하나의 gate로 묶어
CI와 CODEOWNERS, 필수 review 규칙을 결합하면 '코드를 검토하자'는 다짐이 시스템이 돼. CI는 모든 PR에 test, lint, type, security 검사를 실행하고 CODEOWNERS는 맞는 사람에게 맞는 코드를 보낸다. 필수 review 규칙은 자동 검사와 사람 판단이 모두 끝날 때까지 merge를 막아. 어느 하나만으로는 부족하고 함께 있어야 main을 지키는 gate가 돼.
CI는 값싸고 빠른 자동 절반이야. push마다 test를 돌리고 lint가 style을, type-check가 API shape 오류를, security scan이 알려진 취약 dependency와 뚜렷한 leak을 잡아. 필수 CI에는 예외가 없어야 해. 'skip CI' label을 붙이거나 아마 괜찮을 것이라며 빨간 상태에서 merge하면 gate는 무너져. 실패한 check를 고치거나 PR을 되돌려야지 우회하면 안 돼.
CODEOWNERS는 사람 쪽 배정을 맡아. .github/CODEOWNERS가 path를 team이나 user에 연결하고, branch 보호의 'Require review from Code Owners'와 합쳐 path-aware review를 강제해. auth 코드는 auth team, DB migration은 platform team, 문서는 docs team에 보낼 수 있어. PR이 자동으로 배정되고 맞는 사람이 승인할 때까지 merge는 멈춰.
Review 증거를 강화하는 규칙도 있어. 필수 conversation 해결은 모든 comment가 resolved될 때까지 merge를 막고, stale approval dismissal은 새 commit이 오면 옛 승인을 취소해 승인 뒤 의심스러운 변경을 끼우는 일을 막아. Sign-off commit(git commit -s)은 프로젝트 contributor 약관 아래 저작권을 증명하는 Signed-off-by trailer를 더해. 작은 팀에는 모두 필요하지 않을 수 있지만 팀이나 repo의 위험이 커질수록 중요해져.