← 문제 라이브러리
CI/CD 입문 CICD-021 · 17분

의존성을 추가했는데 PR의 CI만 Cannot find module

결제 기능 브랜치에서 입력 검증 라이브러리(zod)를 추가하고 lockfile도 함께 커밋했습니다.

검수된 문제무료
시나리오

결제 기능 브랜치에서 입력 검증 라이브러리(zod)를 추가하고 lockfile도 함께 커밋했습니다. 개발자 PC와 main 브랜치 CI에서는 잘 되는데, 이 PR의 CI만 계속 테스트에서 모듈을 찾지 못한다며 실패합니다. 다시 실행해도 똑같습니다. 이 저장소의 CI는 브랜치마다 node_modules를 캐시해 두고, 캐시가 있으면 설치 단계를 건너뛰도록 설정돼 있습니다. 리뷰어는 lockfile에 zod가 빠진 것 아니냐고 묻습니다. 같은 날 main에 머지된 다른 PR들의 CI는 모두 정상입니다.

단서
CI 로그
Cache restored from key: deps-feature-payments
Run npm ci
Skipping: cache hit
Run npm test
Error: Cannot find module 'zod'
Require stack:
- /home/runner/work/app/app/src/payments/validate.js
워크플로 (캐시 부분) · lockfile
- uses: actions/cache@v4
  id: deps
  with:
    path: node_modules
    key: deps-${{ github.ref_name }}
- if: steps.deps.outputs.cache-hit != 'true'
  run: npm ci

$ grep -c '"node_modules/zod"' package-lock.json
1

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 캐시 키가 무엇이 바뀌었을 때 새로 만들어지는지
  • 캐시 적중과 설치 건너뛰기의 조합
점검 체크리스트
  1. 캐시 키 구성(브랜치 이름뿐인지)
  2. cache-hit일 때 설치 단계가 건너뛰어지는지
  3. lockfile에 해당 패키지가 있는지