Gradle로 Java 빌드 및 테스트하기
Gradle로 Java 빌드 및 테스트하기
GitHub Actions에서 Gradle로 Java 프로젝트를 빌드하고 테스트하는 지속적 통합(CI) 워크플로를 만드는 방법을 알려드릴게요.
출처: 문서
본문
GitHub Actions에서 Gradle 빌드 시스템을 사용해서 Java 프로젝트에 대한 지속적 통합(CI)을 수행하는 워크플로를 어떻게 만드는지 알아봅니다.
소개
이 가이드는 Gradle 빌드 시스템을 사용해서 Java 프로젝트에 대한 지속적 통합(CI)을 수행하는 워크플로를 만드는 방법을 보여줍니다. 만든 워크플로를 통해 풀 리퀘스트의 커밋이 기본 브랜치에 대해 빌드나 테스트 실패를 일으키는 시점을 확인할 수 있습니다. 이 접근 방식은 코드가 항상 정상 상태를 유지하는 데 도움이 될 수 있습니다. CI 워크플로를 확장해서 파일을 캐시하고 워크플로 실행에서 아티팩트를 업로드할 수 있습니다.
GitHub 호스팅 러너에는 Java Development Kits(JDK)와 Gradle을 포함한 사전 설치된 소프트웨어가 있는 도구 캐시가 있습니다. JDK와 Gradle의 소프트웨어 및 사전 설치된 버전 목록은 GitHub-hosted runners를 참고하세요.
사전 요구 사항
YAML과 GitHub Actions 구문에 익숙해야 합니다. 자세한 내용은 다음을 참고하세요:
Java와 Gradle 프레임워크에 대한 기본적인 이해를 권장합니다. 자세한 내용은 Gradle User Manual을 참고하세요.
Gradle 워크플로 템플릿 사용하기
빠르게 시작하려면 저장소의 .github/workflows 디렉터리에 워크플로 템플릿을 추가하세요.
GitHub는 대부분의 Java with Gradle 프로젝트에서 작동하는 Gradle용 워크플로 템플릿을 제공합니다. 이 가이드의 이후 섹션은 이 워크플로 템플릿을 사용자 지정하는 방법의 예시를 제공합니다.
-
GitHub에서 저장소의 메인 페이지로 이동합니다.
-
저장소 이름 아래에서 Actions를 클릭합니다.

-
저장소에 이미 워크플로가 있다면 New workflow를 클릭합니다.
-
"Choose a workflow" 페이지에 추천 워크플로 템플릿 목록이 표시됩니다. "Java with Gradle"을 검색하세요.
-
"Java with Gradle" 워크플로에서 Configure를 클릭합니다. 이 워크플로는 다음 단계를 수행합니다:
-
프로젝트 저장소의 복사본을 체크아웃합니다.
-
Java JDK를 설정합니다.
-
Gradle 환경을 설정합니다.
gradle/actions/setup-gradle액션은 워크플로 실행 간의 캐싱 상태를 처리하고 모든 Gradle 실행에 대한 상세 요약을 제공합니다. -
"Build with Gradle" 스텝은 Gradle Wrapper를 사용해서
build작업을 실행합니다. -
필요에 따라 워크플로를 편집합니다. 예를 들어 Java 버전을 변경합니다.
[!NOTE]
- 이 워크플로 템플릿에는 GitHub가 인증하지 않은 액션이 포함되어 있습니다. 제3자가 제공하는 액션은 별도의 서비스 약관, 개인정보 보호 정책, 지원 문서의 적용을 받습니다.
- 제3자의 액션을 사용한다면 커밋 SHA로 지정된 버전을 사용해야 합니다. 액션이 수정되고 최신 버전을 사용하려면 SHA를 업데이트해야 합니다. 태그나 브랜치를 참조해서 버전을 지정할 수도 있지만 액션이 경고 없이 변경될 수 있습니다. 자세한 내용은 Secure use reference를 참고하세요.
-
Commit changes를 클릭합니다.
gradle.yml워크플로 파일이 저장소의.github/workflows디렉터리에 추가됩니다.
Java 버전과 아키텍처 지정하기
워크플로 템플릿은 x64 플랫폼용 OpenJDK 8이 포함되도록 PATH를 설정합니다. 다른 Java 버전을 사용하거나 다른 아키텍처(x64 또는 x86)를 대상으로 하려면 setup-java 액션을 사용해서 다른 Java 런타임 환경을 선택할 수 있습니다.
예를 들어 x64 플랫폼용으로 Adoptium이 제공하는 JDK 11 버전을 사용하려면 setup-java 액션을 사용하고 java-version, distribution, architecture 파라미터를 각각 '11', 'temurin', x64로 구성할 수 있습니다.
steps:
- uses: actions/checkout@v6
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
자세한 내용은 setup-java 액션을 참고하세요.
코드 빌드 및 테스트하기
로컬에서 코드를 빌드하고 테스트하는 데 사용하는 것과 같은 명령을 사용할 수 있습니다.
워크플로 템플릿은 기본적으로 build 작업을 실행합니다. 기본 Gradle 구성에서 이 명령은 의존성을 다운로드하고, 클래스를 빌드하고, 테스트를 실행하고, 클래스를 배포 가능한 형식(예: JAR 파일)으로 패키징합니다.
프로젝트를 빌드하는 데 다른 명령을 사용하거나 다른 작업을 사용하려면 그것들을 지정할 수 있습니다. 예를 들어 ci.gradle 파일에 구성된 package 작업을 실행하고 싶을 수 있습니다.
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2
- name: Build with Gradle
run: ./gradlew -b ci.gradle package
의존성 캐싱하기
빌드 의존성을 캐시해서 워크플로 실행을 빠르게 할 수 있습니다. 성공적인 실행 후 gradle/actions/setup-gradle은 Gradle 사용자 홈 디렉터리의 중요한 부분을 캐시합니다. 이후 잡에서는 캐시가 복원되므로 빌드 스크립트를 다시 컴파일할 필요가 없고 원격 패키지 저장소에서 의존성을 다운로드할 필요가 없습니다.
gradle/actions/setup-gradle 액션을 사용하면 캐싱이 기본적으로 활성화됩니다. 자세한 내용은 gradle/actions/setup-gradle을 참고하세요.
워크플로 데이터를 아티팩트로 패키징하기
빌드가 성공하고 테스트가 통과한 후 결과 Java 패키지를 빌드 아티팩트로 업로드하고 싶을 수 있습니다. 이렇게 하면 빌드된 패키지가 워크플로 실행의 일부로 저장되고 다운로드할 수 있습니다. 아티팩트는 풀 리퀘스트를 머지하기 전에 로컬 환경에서 테스트하고 디버깅하는 데 도움이 될 수 있습니다. 자세한 내용은 Store and share data with workflow artifacts를 참고하세요.
Gradle은 일반적으로 JAR, EAR, WAR 같은 출력 파일을 build/libs 디렉터리에 만듭니다. upload-artifact 액션을 사용해서 해당 디렉터리의 내용을 업로드할 수 있습니다.
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2
- name: Build with Gradle
run: ./gradlew build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: Package
path: build/libs