GitHub Actions로 CI/CD를 구성했는데 빌드+테스트+배포까지 15분이 걸립니다. PR마다 이렇게 기다리니 생산성이 떨어지는데, 빌드 시간을 줄이는 팁이 있을까요?
현재 워크플로우:
1. checkout
2. Node.js setup
3. npm install (매번 새로)
4. lint + type check
5. 테스트 (Jest, 200개)
6. 빌드
7. Docker 이미지 빌드
8. 배포
모노레포는 아니고 일반 Next.js 프로젝트입니다.
댓글 2
1. **의존성 캐싱** (가장 기본)
```yaml
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
```
2. **병렬 실행**: lint, type-check, test를 별도 job으로 분리해서 병렬로 돌리세요.
3. **Docker 레이어 캐싱**:
```yaml
- uses: docker/build-push-action@v5
with:
cache-from: type=gha
cache-to: type=gha,mode=max
```
4. **테스트 분할**: Jest의 `--shard` 옵션으로 테스트를 여러 job에 분산시키세요.
5. **변경 감지**: paths 필터로 관련 없는 변경에는 빌드를 스킵하세요.
이것만 적용해도 5-7분 이내로 줄어들 겁니다.