본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

CODEOWNERS, CI, review evidence

~20 min · ci, review, codeowners

Level 0추적 전 새싹
0 XP0/47 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

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의 위험이 커질수록 중요해져.

Code

최소 효과적 .github/CODEOWNERS·text
# .github/CODEOWNERS
# 마지막 매칭 패턴 승.

# 다른 데서 청구 안 된 모든 거의 default reviewer
*                          @core-maintainer @secondary

# 팀 요구 있는 민감 영역
/backend/auth/             @auth-team
/frontend/src/auth/        @auth-team
/migrations/               @platform-team
/infra/                    @platform-team
*.tf                       @platform-team

# CI / build pipeline 변경
/.github/                  @platform-team @core-maintainer

# 문서는 docs 팀만 있으면 더 빠르게 ship
/docs/                     @docs-team
README.md                  @docs-team
GitHub Actions PR gate·text
# .github/workflows/pr.yml
name: PR
on:
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20', cache: 'npm' }
      - run: npm ci
      - run: npm run lint
      - run: npm run typecheck
      - run: npm test -- --run

  commitlint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0 }
      - uses: wagoid/commitlint-github-action@v6

  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
      - uses: github/codeql-action/analyze@v3

External links

Exercise

admin 권한이 있는 repo에서 세 가지를 해. (1) path와 team을 잇는 규칙이 하나 이상인 .github/CODEOWNERS를 추가하고, (2) main의 branch 보호에 Code Owner review와 status check 하나 이상을 요구하며, (3) PR에서 lint와 test를 실행하는 간단한 GitHub Actions workflow를 작성해. CODEOWNERS path를 건드리는 PR을 열어 맞는 reviewer가 자동 배정되는지 확인하고 규제 codebase라면 더할 규칙 하나를 적어봐.

Progress

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

댓글 0

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

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