Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

Gradle을 사용하여 Java 빌드 및 테스트

GitHub Actions CI(연속 통합) 워크플로를 만들어 Gradle을 사용하여 Java 프로젝트를 빌드하고 테스트할 수 있습니다.

소개

이 가이드에서는 Gradle 빌드 시스템을 사용하여 Java 프로젝트에 대한 CI(연속 통합)를 수행하는 워크플로를 만드는 방법을 보여 줍니다. 만든 워크플로를 사용하면 끌어오기 요청에 커밋할 때 기본 분기에 대한 빌드 또는 테스트 오류가 발생하는 경우를 확인할 수 있습니다. 이 방법은 코드가 항상 정상인지 확인하는 데 도움이 될 수 있습니다. CI 워크플로를 캐시 파일로 확장하고 워크플로 실행에서 아티팩트를 업로드할 수 있습니다.

GitHub 호스트 러너에는 소프트웨어가 사전 설치된 도구 캐시가 있습니다. 여기에는 JDK(Java Development Kit) 및 Gradle이 포함되어 있습니다. 소프트웨어 및 사전 설치된 JDK 및 Gradle 버전 목록은 “GitHub 호스트 실행기 사양”을 참조하세요.

필수 조건

YAML 및 GitHub Actions의 구문에 대해 잘 알고 있어야 합니다. 자세한 내용은 다음을 참조하세요.

Java 및 Gradle 프레임워크를 기본적으로 이해하는 것이 좋습니다. 자세한 내용은 Gradle 설명서의 시작을 참조하세요.

Gradle 시작 워크플로 사용

GitHub는 대부분의 Gradle 기반 Java 프로젝트에서 작동하는 Gradle 시작 워크플로를 제공합니다. 자세한 내용은 Gradle 시작 워크플로를 참조하세요.

빠르게 시작하려면 새 워크플로를 만들 때 사전 구성된 Gradle 시작 워크플로를 선택할 수 있습니다. 자세한 내용은 “GitHub Actions 빠른 시작”을 참조하세요.

리포지토리의 .github/workflows 디렉터리에 새 파일을 만들어 이 워크플로를 수동으로 추가할 수도 있습니다.

YAML
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.

# 커밋 SHA에 작업을 고정하는 것이 좋습니다.
# 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.
# 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.

name: Java CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Build with Gradle
        uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
        with:
          arguments: build

워크플로는 다음 단계를 수행합니다.

  1. checkout 단계는 실행기에서 리포지토리 사본을 다운로드합니다.
  2. 이 단계에서는 setup-java Eclipse Adoptium에서 Eclipse Temurin(Java) 17 JDK를 구성합니다.
  3. “Gradle 래퍼 유효성 검사” 단계는 원본 트리에 있는 Gradle 래퍼 JAR 파일의 체크섬의 유효성을 검사합니다.
  4. “Gradle을 사용하여 빌드” 단계는 GitHub에서 Gradle 조직에서 제공한 gradle/gradle-build-action 작업을 사용하여 빌드를 수행합니다. 이 작업은 Gradle 호출, 결과 수집, 작업 간의 캐싱 상태를 처리합니다. 자세한 내용은 gradle/gradle-build-action를 참조하세요.

기본 시작 워크플로는 빌드 및 테스트 워크플로를 만들 때 매우 유용한 시작점이며 프로젝트의 요구 사항에 맞게 시작 워크플로를 사용자 지정할 수 있습니다.

다른 운영 체제에서 실행

시작 워크플로는 GitHub-호스팅된 ubuntu-latest 실행기를 사용하여 Linux에서 실행되도록 작업을 구성합니다. runs-on 키를 변경하여 다른 운영 체제에서 작업을 실행할 수 있습니다. 예를 들어 GitHub-호스팅된 Windows 실행기를 사용할 수 있습니다.

runs-on: windows-latest

또는 GitHub-호스팅된 macOS 실행기에서 실행할 수 있습니다.

runs-on: macos-latest

Docker 컨테이너에서 작업을 실행하거나 자체 인프라에서 실행되는 자체 호스팅 실행기를 제공할 수도 있습니다. 자세한 내용은 “GitHub Actions에 대한 워크플로 구문”을 참조하세요.

JVM 버전 및 아키텍처 지정

시작 워크플로는 x64 플랫폼의 경우 OpenJDK 8을 포함하도록 PATH를 설정합니다. 다른 버전의 Java를 사용하거나 다른 아키텍처(x64 또는 x86)를 대상으로 지정하려는 경우 setup-java 작업을 사용하여 다른 Java 런타임 환경을 선택할 수 있습니다.

예를 들어 x64 플랫폼용 Adoptium에서 제공하는 JDK 버전 11을 사용하려면 setup-java 작업을 사용하고 java-version, distributionarchitecture 매개 변수를 각각 '11', 'adopt'x64로 구성할 수 있습니다.

YAML
steps:
  - uses: actions/checkout@v3
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v3
    with:
      java-version: '11'
      distribution: 'adopt'
      architecture: x64

자세한 내용은 setup-java 작업을 참조하세요.

코드 빌드 및 테스트

코드를 빌드하고 테스트하기 위해 로컬에서 사용하는 것과 동일한 명령을 사용할 수 있습니다.

시작 워크플로는 기본값으로 build 작업을 실행합니다. 기본 Gradle 구성에서 이 명령은 종속성을 다운로드하고, 클래스를 빌드하고, 테스트를 실행하고, 클래스를 배포 가능한 형식(예: JAR 파일)으로 패키지합니다.

다른 명령을 사용하여 프로젝트를 빌드하거나 다른 작업을 사용하려는 경우 해당 명령을 지정할 수 있습니다. 예를 들어 ci.gradle 파일에 구성된 package 작업을 실행할 수 있습니다.

YAML
steps:
  - uses: actions/checkout@v3
  - uses: actions/setup-java@v3
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Validate Gradle wrapper
    uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
  - name: Run the Gradle package task
    uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
    with:
      arguments: -b ci.gradle package

종속성 캐싱

워크플로 실행 속도를 높이기 위해 빌드 종속성을 캐시할 수 있습니다. 성공적인 실행 후 gradle/gradle-build-action은 Gradle 사용자 홈 디렉터리의 중요한 부분을 캐시합니다. 이후 작업에서는 빌드 스크립트를 다시 컴파일할 필요가 없고 원격 패키지 리포지토리에서 종속성을 다운로드할 필요가 없도록 캐시가 복원됩니다.

캐싱은 gradle/gradle-build-action 작업을 사용할 때 기본값으로 사용하도록 설정됩니다. 자세한 내용은 gradle/gradle-build-action를 참조하세요.

워크플로 데이터를 아티팩트로 패키지

빌드에 성공하고 테스트를 통과한 후에는 그에 따른 Java 패키지를 빌드 아티팩트로 업로드할 수 있습니다. 그러면 워크플로 실행의 일부로 빌드된 패키지를 저장하고 다운로드할 수 있습니다. 아티팩트는 병합되기 전에 로컬 환경에서 끌어오기 요청을 테스트하고 디버그하는 데 도움이 될 수 있습니다. 자세한 내용은 “아티팩트를 사용하여 워크플로 데이터 유지”를 참조하세요.

Gradle은 일반적으로 build/libs 디렉터리에 JAR, EAR 또는 WAR과 같은 출력 파일을 생성합니다. upload-artifact 작업을 사용하여 해당 디렉터리의 콘텐츠를 업로드할 수 있습니다.

YAML
steps:
  - uses: actions/checkout@v3
  - uses: actions/setup-java@v3
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Validate Gradle wrapper
    uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
  - name: Build with Gradle
    uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
    with:
      arguments: build
  - uses: actions/upload-artifact@v3
    with:
      name: Package
      path: build/libs