NestJS · CI

CI에서 테스트를 계층별로 실행하기

CI 테스트 통합은 명령 하나를 돌리는 일이 아니라, 빠른 검증과 느린 검증을 계층화해 피드백은 빠르게 주고 배포 위험은 충분히 줄이는 흐름이다.

01

빠른 차단

lint, format, typecheck, unit test를 먼저 실행해 기본 오류를 빨리 잡는다.

02

서비스 준비

통합 테스트는 test container나 CI service로 DB와 Redis를 띄운다.

03

E2E 실행

실제 Nest application을 시작하고 HTTP 요청으로 controller 경계를 검증한다.

04

결과 보존

coverage와 junit report, 빌드 산출물를 남겨 실패 원인을 추적한다.

Unit
가장 빠른 피드백 provider 단위 검증으로 몇 초 안에 실패를 알림
모든 PR 기본
Integration
인프라 연결 DB query, transaction, external adapter 계약 확인
격리된 데이터 필요
E2E
HTTP 계약 request부터 response까지 app module 기준 검증
개수는 핵심 경로 중심
Cache
CI 속도 node_modules보다 package manager cache와 Docker layer 활용
lockfile 변경 시 무효화

순서 · 데이터 · 비밀값 점검

순서 느린 테스트가 빠른 실패를 가리지 않는다.
데이터 테스트 DB seed와 cleanup이 순서 의존성을 만들지 않는다.
비밀값 CI secret은 로그에 노출되지 않고 권한이 최소화돼 있다.
리포트 실패한 테스트와 커버리지 변화가 PR에서 바로 보인다.