반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 데이터베이스
- 인공지능
- 버전관리
- 프로그래밍언어
- 빅데이터
- I'm Sorry
- 디자인패턴
- 소프트웨어
- Yes
- 머신러닝
- 컴퓨터과학
- 파이썬
- 사이버보안
- 소프트웨어공학
- 웹개발
- 네트워크
- 자바스크립트
- 클라우드컴퓨팅
- 데이터분석
- 프로그래밍
- 컴퓨터공학
- 네트워크보안
- 데이터구조
- springboot
- 데이터과학
- 자료구조
- 보안
- 컴퓨터비전
- 알고리즘
- 딥러닝
Archives
- Today
- Total
스택큐힙리스트
Gradle 캐시 최적화로 빌드 시간 단축하기 본문
반응형
빌드가 5 분씩 걸리면 작은 수정 → PR → 리뷰까지 대기 시간이 눈덩이처럼 불어납니다. GitHub Actions에서 Gradle 캐시를 극대화해 “녹색 체크”를 더 빠르게 받아보세요.
1. 왜 CI 빌드가 느릴까?
GitHub Actions 러너는 매 실행마다 “새 서버”로 뜹니다.
- 의존성 다운로드 (~/.gradle/wrapper, ~/.gradle/caches)
- 컴파일 결과물 재생성
이 두 가지가 시간을 잡아먹습니다. 캐시가 해답입니다.
2. 캐시의 두 얼굴
종류 | 역할 | 저장 위치 | 활성화 방법 |
Dependency Cache | 라이브러리 ZIP·JAR 다운로드 결과 | ~/.gradle/wrapper, ~/.gradle/caches/modules-* | actions/cache 또는 setup-gradle |
Build Cache | Task 출력물(클래스파일 등) | ~/.gradle/caches/build-cache-1 | org.gradle.caching=true |
표 대신 간단 요약: “라이브러리 캐시”와 “Task 결과 캐시” 두 겹으로 가속한다.
3. actions/cache 기본 예제
- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle-
- key: OS + Gradle 스크립트 해시 → 의존성 변경 시 자동 무효화
- restore-keys: 근사치 키로 과거 캐시 재사용
4. 더 똑똑하게: setup-gradle@v3
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
gradle-version: wrapper # wrapper에 정의된 버전 사용
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- 의존성·래퍼·빌드 스캔까지 한 번에 관리
- cache-read-only로 PR에서 캐시 오염 막기
5. Gradle Build Cache ON
gradle.properties에 한 줄:
org.gradle.caching=true
동일 입력의 Task는 재실행 없이 결과만 복사합니다. 사내 Gradle Enterprise 또는 Build Cache Node를 연결하면 팀 전체가 캐시를 공유할 수 있습니다.
6. 캐시 키 설계 3 원칙
- “무효화 용이성 > 적중률” – 오래된 바이너리 오류를 막는다.
- OS·JDK 버전을 포함 – 런타임 불일치 방지.
- 대형 멀티 모듈은 모듈별 캐시 or restore-keys로 유연성 확보.
7. 효과 측정 & 관리
- 의존성 캐시만으로 78 초 → 47 초(-40 %) 단축.
- GitHub Free 요금제 기준 캐시 보존: 7 일 / 10 GB. 주기적으로 키를 바꿔 “고인 물” 제거.
8. 흔한 오류 Top 3
- 경로 오타 – ~/.gradle 앞에 틸드 빠짐.
- 동일 Job에서 캐시 두 번 저장 – 마지막만 유효; conflict 발생.
- Gradle Build Dir 캐싱 – 효용 ↓·사이즈 ↑. Task Output Cache로 대체하세요.
반응형
'개발' 카테고리의 다른 글
Spring Boot로 1분 만에 프로젝트 만들기 (3) | 2025.07.14 |
---|---|
자바 스프링 개발 시작하기 - 8일차 IoC·DI와 Bean 생명주기 (0) | 2025.07.14 |
자바 스프링 개발 시작하기 - 7일차 코드 품질 높이는 Git Flow·PR·CI (1) | 2025.07.13 |
친구 추천 서비스, 왜 무너졌을까? SRP 위반 리팩터링 실전 해부 (0) | 2025.07.13 |
SRP 리팩터링 체크리스트: 코드 냄새 없애는 7단계 (0) | 2025.07.13 |
Comments