CI Preflight 검증
코드 변경 후 커밋/PR 전에 CI에서 실행되는 검증을 로컬에서 먼저 수행합니다.
필수: 코드 변경 완료 시 검증
코드 작성을 완료하면 반드시 아래 검증을 순서대로 실행합니다.
1. 변경된 앱 확인
bash1# 현재 브랜치에서 변경된 파일 확인 2git diff --name-only origin/develop...HEAD 3 4# 변경된 앱 파악 (apps/ 또는 packages/ 하위)
2. 검증 실행 (순서 중요)
bash1# 1) Type Check - 가장 먼저 (타입 오류가 다른 검증에 영향) 2pnpm turbo run check-types --filter=<app> 3 4# 2) Lint 5pnpm turbo run lint --filter=<app> 6 7# 3) Format Check 8pnpm turbo run format:check --filter=<app> 9 10# 4) Test 11pnpm turbo run test:ci --filter=<app> 12 13# 5) Build (선택적 - PR 전 권장) 14pnpm turbo run build --filter=<app>
3. 빠른 전체 검증
변경된 부분만 한번에 검증:
bash1# develop 브랜치 대비 변경된 부분 검증 2# 주의: zsh에서는 반드시 따옴표로 감싸야 함 (bracket이 glob으로 해석됨) 3pnpm turbo run check-types lint format:check test:ci --filter='[origin/develop...HEAD]'
Turbo 필터 팁
자주 사용하는 패턴
bash1# 특정 앱만 2--filter=blog 3--filter=mumak-next 4 5# 변경된 부분만 (CI와 동일) 6# zsh에서는 따옴표 필수 7--filter='[origin/develop...HEAD]' 8 9# 특정 앱 + 의존성 10--filter=...blog
캐시 관련
bash1# 캐시 무시 (이상한 동작 시) 2pnpm turbo run check-types --force 3 4# 전체 캐시 삭제 5pnpm turbo:clean && pnpm install
자주 발생하는 오류와 해결
Type Check 실패
| 오류 유형 | 원인 | 해결 |
|---|---|---|
Cannot find module | 빌드 순서 문제 | pnpm turbo run build --filter=@mumak/ui 먼저 실행 |
| 타입 불일치 | 의존 패키지 변경 | 해당 패키지 check-types 먼저 확인 |
.d.ts 없음 | 빌드 미실행 | 의존 패키지 빌드 후 재시도 |
Lint 실패
bash1# 자동 수정 가능한 것들 2pnpm turbo run lint:fix --filter=<app>
Format 실패
bash1# 포맷 자동 적용 2pnpm turbo run format --filter=<app>
검증 체크리스트
코드 변경 완료 시 확인:
-
check-types통과 -
lint통과 (또는lint:fix실행) -
format:check통과 (또는format실행) -
test:ci통과 - (PR 전)
build통과
빠른 검증 스크립트
전체 검증을 한번에 실행하려면:
bash1./scripts/preflight.sh [app-name]
스크립트 없이 한줄로:
bash1pnpm turbo run check-types lint format:check test:ci --filter='[origin/develop...HEAD]'