캐시는 CI에서 가장 큰 단일 가속 수단이야
처음 의존성을 설치할 때는 분 단위 시간이 걸려. 두 번째에는 캐시가 따뜻해져서 초 단위로 끝나지. actions/cache가 범용 기본 요소고, setup-* 액션은 내장 캐시 단축키를 가지고 있어.
캐시 두 가지 방식
1) 내장 캐시 (권장)
actions/setup-python@v5+cache: pip.actions/setup-node@v4+cache: npm/pnpm/yarn.astral-sh/setup-uv@v3+enable-cache: true.actions/setup-go@v5는 기본적으로 Go 모듈 캐시를 써.
2) 범용 actions/cache
path:— 캐시할 대상이야.key:— 주 키야. 보통${{ runner.os }}-deps-${{ hashFiles('**/lockfile') }}를 써.restore-keys:— 정확한 키가 없으면 접두사로 폴백해.
캐시 함정
- 캐시는 브랜치 범위로 동작해. main 브랜치의 캐시는 다른 브랜치에서도 보이지만, 기능 브랜치의 캐시는 main에서는 안 보여.
- 저장소당 총 10GB 캐시를 쓸 수 있어. 오래된 캐시는 LRU 방식으로 제거돼.
- 빌드 출력값 캐싱(
dist/,.next/)은 시간을 아껴주지만 정확성에 위험이 있어. 가끔 콜드 캐시 상태에서도 빌드가 제대로 작동하는지 검증해 봐야 해.