
데브옵스
Lint Cl 속도 개선: 변경 파일만 검사하는 방법
두줄요약
PR에서 변경된 파일만 Lint하도록 CI를 개선한 사례를 소개했습니다. Git diff와 공통 조상을 활용해 실행 시간을 줄이고 리뷰 효율을 높였습니다.
문제 상황
- PR마다 프로젝트 전체 파일을 Lint 검사하면서 실행 시간 증가
- 변경되지 않은 파일의 오류까지 함께 보여져 리뷰 대상 식별이 어려움
- 작은 수정에도 CI 대기 시간이 길어져 개발자 경험 저하
원인 분석
- 모든 파일을 대상으로 하는 기존 Lint CI 구성
- 브랜치 간 단순 비교 시 다른 작업자의 병합 내용까지 포함될 가능성
- 최신 커밋만 가져오는 checkout 기본 설정으로 공통 조상 추적 어려움
해결 방법
- Git merge-base와 git diff로 PR의 공통 조상 기준 변경 파일 추출
- js, jsx, ts, tsx 파일만 필터링해 Lint 대상 축소
- GitHub Actions에서 fetch-depth 0 설정과 base/head 브랜치 인자 전달
성능/운영 포인트
- 평균 7분이던 Lint 시간이 2분으로 단축
- 변경 파일 로그로 리뷰 피드백의 명확성 향상
- Test, Build와의 병렬 실행이 쉬워져 CI/CD 병목 완화
