Green main 은 팀 계약
CI/CD 에서 가장 중요한 문화 규칙: main 을 깨지 마. Main 이 red 가 되면 고치는 게 팀의 최우선이야. Feature 마무리 아니야. 3시 미팅 아니야. Build 야.
당연하게 들리지만 끊임없이 위반돼. 흔한 실패:
- 1시간 전에 CI green 이었던 PR 을 merge 했는데, 그 사이 다른 PR 이 land 해서 조합이 깨짐 (
strictrequired-status-check 없음). - '그냥 doc 수정이니까' admin 권한으로 CI 우회.
- CI flake (간헐적 실패) 를 새로운 normal 로 받아들임 — 엔지니어들이 'retry 하면 될 거야' 하면서 red 를 무시하기 시작.
- Test 를 고치는 대신 disable.
Main 을 green 으로 유지하는 discipline
- Branch protection: merge 전 CI green 요구, strict (새 merge base 에서 재실행) 요구.
- Merge queue: merge 를 직렬화해서 각 PR 이 실제 land 할 base 에 대해 test 받도록.
- Flake 를 P0 로: 어떤 test 도 random 하게 fail 하면 안 됨. Flake 를 고치거나 test 를 삭제 — 세 번째 옵션 없어.
- 'Main 깨면 main 고침' — 깨진 commit 을 push 한 엔지니어가 즉시 revert 나 fast-forward fix 의 owner.