피드로 돌아가기
Dev.toDevOps
원문 읽기
pnpm store-dir 명시적 설정을 통한 CI 빌드 시간 40분에서 8분으로 단축
pnpm workspaces: el caché de CI que sobrevivió al fix y me costó 40 minutos de build
AI 요약
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 패턴을 사용할 것