피드로 돌아가기
pnpm workspaces: el caché de CI que sobrevivió al fix y me costó 40 minutos de build
Dev.toDev.to
DevOps

pnpm store-dir 명시적 설정을 통한 CI 빌드 시간 40분에서 8분으로 단축

pnpm workspaces: el caché de CI que sobrevivió al fix y me costó 40 minutos de build

Juan Torchia2026년 5월 12일10intermediate

Context

GitHub Actions 환경의 pnpm Monorepo 구성 시, 기본 캐시 설정만으로는 store-dir의 동적 경로 변경으로 인한 Cache Miss가 발생함. 이로 인해 매 실행마다 모든 패키지를 새로 다운로드하며 빌드 효율성이 급격히 저하되는 한계가 있음.

Technical Solution

  • PNPM_STORE_PATH 환경 변수 정의를 통한 store 경로의 고정 및 예측 가능성 확보
  • pnpm config set store-dir 명령어를 실행하여 pnpm이 명시된 경로를 사용하도록 강제함
  • actions/cache를 활용해 고정된 store-dir 경로를 직접 캐싱하여 Runner 간 데이터 재사용성 극대화
  • hashFiles('**/pnpm-lock.yaml') glob 패턴 적용으로 Monorepo 내 모든 워크스페이스의 의존성 변경을 감지하는 캐시 키 설계
  • setup-node의 기본 cache: 'pnpm' 옵션 대신 수동 캐시 전략을 채택하여 프로젝트 루트 외 개별 패키지의 symlink 구조 유지

1. CI 로그에서 'Cache not found' 또는 패키지 재다운로드 수치를 정기적으로 모니터링할 것

2. pnpm Monorepo 사용 시 `setup-node` 기본 캐시 대신 `store-dir` 명시적 설정과 `actions/cache` 조합을 검토할 것

3. Lockfile 해시 생성 시 루트뿐만 아니라 모든 하위 워크스페이스의 파일을 포함하는 glob 패턴을 사용할 것

원문 읽기