Skip to main content

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

GitHub Actions CI(연속 통합) 워크플로를 만들어 Gradle을 사용하여 Java 프로젝트를 빌드하고 테스트하는 방법을 알아봅니다.

데이터 재사용 가능.작업.엔터프라이즈-깃허브-호스티드-러너 %}

소개

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

GitHub에서 호스팅하는 실행기는 Java Development Kit(JDK)와 Gradle이 사전 설치된 소프트웨어 도구 캐시를 제공합니다. JDK 및 Gradle용 소프트웨어 및 미리 설치된 버전 목록은 GitHub 호스팅 실행기을(를) 참조하세요.

필수 조건

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

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

GitHub Enterprise Server에서 자체 호스팅 실행기 사용

실행기를 자체 호스팅하는 GitHub Enterprise Server에서 actions/setup-LANGUAGE 같은 설정 작업을 사용할 경우 인터넷에 액세스할 수 없는 실행기에서 도구 캐시를 설정해야 할 수 있습니다. 자세한 내용은 인터넷에 액세스할 수 없는 자체 호스팅 실행기에서 도구 캐시 설정을(를) 참조하세요.

Gradle 워크플로 템플릿 사용

빠르게 시작하려면 워크플로 템플릿을 리포지토리의 .github/workflows 디렉터리에 추가합니다.

GitHub는 Gradle을 사용하는 대부분의 Java 프로젝트에 적합한 워크플로우 템플릿을 제공합니다. 이 가이드의 후속 섹션에서는 이 워크플로 템플릿을 사용자 지정하는 방법에 대한 예시를 제공합니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름에서 작업을 클릭합니다.

    "github/docs" 리포지토리의 탭 스크린샷. "작업" 탭은 주황색 윤곽선으로 강조 표시됩니다.

  3. 리포지토리에 워크플로가 이미 있는 경우 새 워크플로를 클릭합니다.

  4. "워크플로 선택" 페이지에는 권장되는 워크플로 템플릿의 선택 항목이 표시됩니다. "Java와 Gradle을 함께 검색합니다."

  5. "Gradle을 사용한 Java" 워크플로에서 Configure 클릭합니다.

    "Gradle을 사용한 Java" 워크플로 템플릿을 찾을 수 없는 경우 다음 워크플로 코드를 리포지토리의 gradle.yml 디렉터리에 있는 .github/workflows이라는 새 파일에 복사합니다.

    YAML
    # 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
    # 작업은 타사에서 제공하며
    # 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
    # 참조하세요.
    name: Java CI with Gradle
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    permissions:
      contents: read
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v5
        - name: Set up JDK 17
          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
    

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

  1. 프로젝트 리포지토리의 복사본을 체크 아웃합니다.

  2. Java JDK를 설정합니다.

  3. Gradle 환경을 설정합니다. 이 gradle/actions/setup-gradle 작업은 워크플로 실행 간의 캐싱 상태를 처리하고 모든 Gradle 실행에 대한 자세한 요약을 제공합니다.

  4. "Gradle로 빌드하기" 단계는 build 작업을 Gradle Wrapper를 사용하여 실행합니다.

  5. 필요에 따라 워크플로를 편집합니다. 예를 들어 Java 버전을 변경합니다.

    참고

    • 워크플로 템플릿에는 GitHub에서 인증되지 않은 작업이 포함되어 있습니다. 제3자가 제공하는 작업은 별도의 서비스 약관, 개인 정보 보호 정책 및 지원 문서를 적용합니다.
    • 타사의 작업을 사용하는 경우 커밋 SHA에서 지정한 버전을 사용해야 합니다. 작업을 수정하고 최신 버전을 사용하려는 경우 SHA를 업데이트해야 합니다. 태그 또는 분기를 참조하여 버전을 지정할 수 있지만 경고 없이 작업이 변경될 수 있습니다. 자세한 내용은 안전 사용 참조을(를) 참조하세요.
  6.        **변경 내용 커밋**을 클릭합니다.
    

데이터 재사용.동작.java-jvm-아키텍처 %}

코드 빌드 및 테스트

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

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

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

YAML
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
steps:
  - uses: actions/checkout@v5
  - 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 패키지를 빌드 아티팩트로 업로드할 수 있습니다. 그러면 워크플로 실행의 일부로 빌드된 패키지를 저장하고 다운로드할 수 있습니다. 아티팩트는 병합되기 전에 로컬 환경에서 끌어오기 요청을 테스트하고 디버그하는 데 도움이 될 수 있습니다. 자세한 내용은 워크플로 아티팩트와 데이터 저장 및 공유을(를) 참조하세요.

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

YAML
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
steps:
  - uses: actions/checkout@v5
  - 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@v3
    with:
      name: Package
      path: build/libs