핵심 요약
CI가 느린 가장 큰 이유는 매 실행마다 의존성을 새로 설치하기 때문이다. actions/setup-node의 내장 캐시나 actions/cache로 의존성·빌드 산출물을 캐싱하고, 도커는 레이어 캐시(GHA cache/registry)를 쓰면 시간이 크게 준다.
1. 의존성 캐시
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm' # package-lock 기준 자동 캐시
- run: npm ci
2. 추가 단축
| 대상 | 방법 |
|---|---|
| 빌드 산출물 | actions/cache로 키 지정 |
| 도커 레이어 | buildx + cache-from/to |
| 테스트 | 변경 영향 범위만 실행 |
3. 함정
- 캐시 키가 너무 광범위하면 stale, 너무 좁으면 적중 안 됨 — lock 파일 해시를 키로
- npm install 대신
npm ci(lock 고정·캐시 친화) - 캐시 용량·만료 한도가 있다 — 큰 캐시 남발 주의
자주 묻는 질문
캐시를 걸었는데 적중이 안 돼요.
키가 매번 달라지면 적중하지 않습니다. lock 파일 해시 기반 키를 쓰고, restore-keys로 부분 일치 폴백을 두세요.
npm install과 npm ci 중 뭐가 낫나요?
CI에선 npm ci가 권장입니다. lock 파일을 정확히 따르고 node_modules를 깨끗이 설치해 재현성과 캐시 효율이 좋습니다.

댓글 0