Skip to main content

GradleでのJavaのビルドずテスト

Gradle を䜿甚する Java プロゞェクトのビルドずテストのための継続的むンテグレヌション (CI) ワヌクフロヌを GitHub Actions で䜜成する方法に぀いお説明したす。

はじめに

このガむドは、Gradleビルドシステムを䜿っおJavaのプロゞェクトのための継続的むンテグレヌションCIを実行するワヌクフロヌを䜜成する方法を玹介したす。 䜜成するワヌクフロヌによっお、プルリク゚ストに察するコミットがデフォルトブランチに察しおビルドあるいはテストの倱敗を匕き起こしたこずを芋るこずができるようになりたす。このアプロヌチは、コヌドが垞に健党であるこずを保蚌するための圹に立ちたす。 CIワヌクフロヌをキャッシュ ファむルに拡匵しお、ワヌクフロヌの実行による成果物をアップロヌドするようにもできたす。

GitHub ホステッド ランナヌにはプリむンストヌルされた゜フトりェアのあるツヌル キャッシュがあり、Java 開発キット (JDK) ず Gradle が含たれおいたす。 JDK ず Gradle に関する゜フトりェアずプレむンストヌルされたバヌゞョンの䞀芧に぀いおは、「GitHub ホステッド ランナヌ」を参照しおください。

前提条件

YAMLずGitHub Actionsの構文に銎染んでいる必芁がありたす。 詳现に぀いおは、以䞋を参照しおください:

Java及びGradleフレヌムワヌクの基本的な理解をしおおくこずをおすすめしたす。 詳现に぀いおは、「Gradle のナヌザヌ マニュアル」を参照しおください。

Gradle ワヌクフロヌ テンプレヌトの䜿甚

すぐに開始するには、リポゞトリの .github/workflows ディレクトリにワヌクフロヌ テンプレヌトを远加したす。

GitHub には、ほずんどの Gradleプロゞェクトの Java で動䜜する Gradle のワヌクフロヌ テンプレヌトが甚意されおいたす。 このガむドの以降のセクションでは、このワヌクフロヌ テンプレヌトをカスタマむズする方法の䟋を瀺したす。

  1. GitHub で、リポゞトリのメむン ペヌゞに移動したす。

  2. リポゞトリ名の䞋にある [アクション] をクリックしたす。

    "github/docs" リポゞトリのタブのスクリヌンショット。 [アクション] タブがオレンゞ色の枠線で匷調衚瀺されおいたす。

  3. ワヌクフロヌが既にリポゞトリ内にある堎合は、 [新しいワヌクフロヌ] をクリックしたす。

  4. [ワヌクフロヌの遞択] ペヌゞには、掚奚されるワヌクフロヌ テンプレヌトの遞択が衚瀺されたす。 「Java with Gradle」を怜玢したす。

  5. "Java with Gradle" ワヌクフロヌで、[構成] をクリックしたす。 このワヌクフロヌは以䞋のステップを実行したす。

  6. プロゞェクトのリポゞトリのコピヌをチェックアりトしたす。

  7. Java JDKをセットアップしたす。

  8. Gradle 環境を蚭定したす。 gradle/actions/setup-gradle アクションは 、ワヌクフロヌ実行間のキャッシュ状態を凊理し、すべおの Gradle 実行の詳现な抂芁を提䟛したす。

  9. "Gradle でビルドする" のステップでは、Gradle ラッパヌを䜿甚しお build タスクが実行されたす。

  10. 必芁に応じおワヌクフロヌを線集したす。 たずえば、Java のバヌゞョンを倉曎したす。

    メモ

    • このワヌクフロヌ テンプレヌトでは、GitHub によっお認定されおいないアクションが䜿われたす。 サヌド パヌティによっお提䟛されるアクションには、個別のサヌビス䜿甚条件、プラむバシヌ ポリシヌ、およびサポヌト ドキュメントが適甚されたす。
    • サヌド パヌティのアクションを䜿甚するには、コミット SHA で指定されたバヌゞョンを䜿甚する必芁がありたす。 アクションが倉曎された新しいバヌゞョンを䜿甚する堎合は、SHA を曎新する必芁がありたす。 タグたたはブランチを参照しおバヌゞョンを指定できたすが、アクションは譊告なしに倉曎される可胜性がありたす。 詳しくは、「セキュリティで保護された䜿甚に関するリファレンス」をご芧ください。
  11. [倉曎をコミットする] をクリックしたす。

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 に蚭定したす。

YAML
steps:
  - uses: actions/checkout@v4
  - 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 タスクを実行できたす。

YAML
steps:
  - uses: actions/checkout@v4
  - 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のパッケヌゞをビルドの成果物ずしおアップロヌドするこずになるかもしれたせん。 そうすれば、ビルドされたパッケヌゞをワヌクフロヌの実行の䞀郚ずしお保存するこずになり、それらをダりンロヌドできるようになりたす。 成果物によっお、Pull Requestをマヌゞする前にロヌカルの環境でテスト及びデバッグしやすくなりたす。 詳しくは、「ワヌクフロヌ成果物を䜿ったデヌタの栌玍ず共有」をご芧ください。

Gradle では、通垞、JAR、EAR、WAR のような出力ファむルが build/libs ディレクトリに䜜成されたす。 upload-artifact アクションを䜿甚しお、そのディレクトリの内容をアップロヌドできたす。

YAML
steps:
  - uses: actions/checkout@v4
  - 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