Gradle에서 GitHub Actions를 사용하는 방법은 무엇인가요?
_____Q1: Gradle 프로젝트를 GitHub Actions에서 어떻게 빌드하나요?
A1: GitHub Actions 워크플로우 YAML 파일(`.github/workflows/ci.yml`)을 만들어 다음과 같이 설정합니다.
```yaml
name: Gradle Build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin' AdoptOpenJDK 대신 Temurin 사용 권장
java-version: '17'
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper/
key: ${{ runner.os }}-gradle-${{ hashFiles(' /*.gradle*', ' /gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle
- name: Build with Gradle
run: ./gradlew build
```
Q2: Gradle 캐시를 GitHub Actions에서 어떻게 효율적으로 사용하나요?
A2: `actions/cache` 액션을 사용하여 `~/.gradle/caches`와 `~/.gradle/wrapper` 폴더를 캐시합니다. 키는 `gradle` 파일들 및 `gradle-wrapper.properties` 파일의 해시값을 조합하여 만듭니다.
예:
```yaml
- uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper/
key: ${{ runner.os }}-gradle-${{ hashFiles(' /*.gradle*', ' /gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle
```
A3: 가능하지만 권장하지 않습니다. Gradle Wrapper(`gradlew`)는 프로젝트에 지정된 Gradle 버전을 일관되게 사용하게 해주므로, GitHub Actions에서도 Wrapper를 사용하는 것이 가장 안정적입니다.
Q4: 특정 Gradle 태스크만 실행하고 싶을 때는 어떻게 하나요?
A4: 빌드 스텝에서 `./gradlew build` 대신 원하는 태스크를 명시합니다. 예를 들어 `test`만 실행하려면:
```yaml
- name: Run tests
run: ./gradlew test
```
Q5: 멀티모듈 Gradle 프로젝트를 GitHub Actions에서 빌드하려면?
A5: 기본적으로 `./gradlew build`는 모든 서브모듈을 빌드하므로 별도 설정 없이도 멀티모듈을 빌드합니다. 단, 캐시 정책을 최적화하려면 큰 프로젝트의 구조에 따라 캐시 키를 세분화할 수 있습니다.
Q6: Gradle 빌드 결과를 GitHub Actions에서 아티팩트로 저장하려면?
A6: `actions/upload-artifact` 액션을 사용하여 `build/libs` (JAR, WAR 등 산출물 위치)를 업로드할 수 있습니다. 예:
```yaml
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: my-app-build
path: build/libs/
```
Q7: 여러 JDK 버전에서 Gradle 빌드를 테스트하려면?
A7: `strategy.matrix` 를 사용하여 여러 JDK 버전을 병렬로 테스트합니다. 예:
```yaml
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [8, 11, 17]
steps:
- uses: actions/checkout@v3
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ matrix.java-version }}
- name: Build with Gradle
run: ./gradlew build
```
Q8: GitHub Actions에서 Gradle 테스트 커버리지 도구를 연동하려면?
A8: Gradle에 Jacoco 또는 다른 커버리지 플러그인을 설정한 후, 워크플로우에서 보고서 생성과 함께 `actions/upload-artifact` 로 커버리지 리포트를 저장하거나, 별도의 서비스 연동(Codecov, Coveralls 등)을 추가할 수 있습니다.
---
위와 같이 설정하면 GitHub Actions에서 Gradle 프로젝트를 자동 빌드, 테스트, 캐시, 아티팩트 저장까지 효과적으로 관리할 수 있습니다.
작성자:
박재현 [비회원]
| 작성일자: 1년 전
2025-01-01 07:52:02
조회수: 175 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 175 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.