C.W.K.
Stream
Lesson 08 of 12 · published

Green build 는 신성해

~12 min · culture, discipline, main

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Green main 은 팀 계약

CI/CD 에서 가장 중요한 문화 규칙: main 을 깨지 마. Main 이 red 가 되면 고치는 게 팀의 최우선이야. Feature 마무리 아니야. 3시 미팅 아니야. Build 야.

당연하게 들리지만 끊임없이 위반돼. 흔한 실패:

  • 1시간 전에 CI green 이었던 PR 을 merge 했는데, 그 사이 다른 PR 이 land 해서 조합이 깨짐 (strict required-status-check 없음).
  • '그냥 doc 수정이니까' admin 권한으로 CI 우회.
  • CI flake (간헐적 실패) 를 새로운 normal 로 받아들임 — 엔지니어들이 'retry 하면 될 거야' 하면서 red 를 무시하기 시작.
  • Test 를 고치는 대신 disable.

Main 을 green 으로 유지하는 discipline

  1. Branch protection: merge 전 CI green 요구, strict (새 merge base 에서 재실행) 요구.
  2. Merge queue: merge 를 직렬화해서 각 PR 이 실제 land 할 base 에 대해 test 받도록.
  3. Flake 를 P0 로: 어떤 test 도 random 하게 fail 하면 안 됨. Flake 를 고치거나 test 를 삭제 — 세 번째 옵션 없어.
  4. 'Main 깨면 main 고침' — 깨진 commit 을 push 한 엔지니어가 즉시 revert 나 fast-forward fix 의 owner.

Code

Merge queue 설정 — GitHub native·yaml
# Workflow that runs on the merge queue
name: ci
on:
  pull_request:
  merge_group:    # GitHub merge queue event
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: pytest -q

External links

Exercise

Repo 의 가장 최근 red main build 를 찾아 (Actions tab → main → failure 필터). 실패 읽어. 어떻게 land 했어? Strict required-status-check 켜져 있었어? Retry 로 가려진 flake 였어? 뭘 바꿀지 한 문단 postmortem 써.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.