ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情� �を見ることができます。
はじめに
このガイドは、Gradleビルドシステ� を使ってJavaのプロジェクトのための継続的インテグレーション(CI)を実行するワークフローを作成する方法を紹介します。 作成するワークフローによって、Pull Requestに対するコミットがデフォルトブランチに対してビルドあるいはテストの失敗を引き起こしたことを見ることができるようになります。このアプローチは、コードが常に健全であることを保証するための役に立ちます。 You can extend your CI workflow to upload artifacts from a workflow run.
GitHubホストランナーは、Java Development Kits(JDKs)及びGradleを含むプリインストールされたソフトウェアを伴うツールキャッシュを持ちます。 JDK および Gradle のソフトウェアとプリインストールされたバージョンのリストについては、「GitHub でホストされているランナーの仕様」を参照してく� さい。
必要な環境
YAMLとGitHub Actionsの構文に馴染んでいる必要があります。 詳しい情� �については、以下を参照してく� さい。
Java及びGradleフレー� ワークの基本的な理解をしておくことをおすすめします。 詳しい情� �については、GradleのドキュメンテーションのGetting Startedを参照してく� さい。
GitHub Enterprise Server上でのセルフホストランナーの利用
GitHub Enterprise Server上でセルフホストランナーと合わせてセットアップアクション(actions/setup-LANGUAGEのような)を使う� �合、インターネットアクセスを持たないランナー上にツールキャッシュをセットアップする必要があるかもしれません。 詳しい情� �については「インターネットアクセスを持たないセルフホストランナー上へのツールキャッシュのセットアップ」を参照してく� さい。
Using the Gradle starter workflow
GitHub provides a Gradle starter workflow that will work for most Gradle-based Java projects. For more information, see the Gradle starter workflow.
To get started quickly, you can choose the preconfigured Gradle starter workflow when you create a new workflow. 詳しい情� �については、「GitHub Actions のクイックスタート」を参照してく� さい。
リポジトリの.github/workflowsに新しいファイルを作成して、手作業でこのワークフローを追� することもできます。
# このワークフローはGitHubによって認定されていないアクションを使用します。 # それらはサードパーティによって提供され、 # 別個の利用規約、プライバシーポリシー、 # サポートドキュメンテーションが適用されます。 name: Java CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 11 uses: actions/setup-java@v2 with: java-version: '11' distribution: 'adopt' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - name: Build with Gradle uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee with: arguments: buildこのワークフローは以下のステップを実行します。
checkoutステップは、ランナーにリポジトリのコピーをダウンロードします。setup-javaステップは、 Adoptium で Java 11 JDK を設定します。- The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree.
- The "Build with Gradle" step does a build using the
gradle/gradle-build-actionaction provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information seegradle/gradle-build-action.
The default starter workflows are excellent starting points when creating your build and test workflow, and you can customize the starter workflow to suit your project’s needs.
様々なオペレーティングシステ� 上での実行
The starter workflow configures jobs to run on Linux, using the GitHub-hosted ubuntu-latest runners. runs-onキーを変更し、異なるオペレーティングシステ� でジョブを実行するようにすることができます。 たとえば、GitHubホストのWindowsランナーを使うことができます。
runs-on: windows-latest あるいはGitHubホストのmacOSランナーで実行させることもできます。
runs-on: macos-latest Dockerコンテナ上でジョブを実行させたり、独自のインフラストラクチャ上で動作するセルフホストランナーを提供したりすることもできます。 詳細については、「GitHub Actionsのワークフロー構文」を参照してく� さい。
JVMのバージョンとアーキテクチャの指定
The starter workflow sets up the PATH to contain OpenJDK 8 for the x64 platform. 異なるバージョンのJavaを使いたい� �合、あるいは異なるアーキテクチャ(x64あるいはx86)をターゲットとしたい� �合には、setup-javaアクションを使って異なるJavaランタイ� 環境を選択できます。
たとえば、x64プラットフォー� 上でAdoptiumが提供するJDKのバージョン11を使うには、setup-javaアクションを使ってjava-version、distribution、architecture パラメータを'11'、'adopt'、x64に設定できます。
steps: - uses: actions/checkout@v2 - name: Set up JDK 11 for x64 uses: actions/setup-java@v2 with: java-version: '11' distribution: 'adopt' architecture: x64詳しい情� �についてはsetup-javaアクションを参照してく� さい。
コードのビルドとテスト
ローカルで使うのと同じコマンドを、コードのビルドとテストに使えます。
スターターワークフローは、デフォルトでbuildタスクを実行します。 デフォルトのGradleの設定では、このコマンドは依存関係をダウンロードし、クラスをビルドし、テストを実行し、たとえばJARファイルのような配布可能なフォーマットにクラスをパッケージします。
プロジェクトのビルドに異なるコマンドを使ったり、異なるタスクを使いたいのであれば、それらを指定できます。 たとえば、ci.gradleファイル中で設定されたpackageタスクを実行したいこともあるでしょう。
steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 with: java-version: '11' distribution: 'adopt' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - name: Run the Gradle package task uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee with: arguments: -b ci.gradle package成果物としてのワークフローのデータのパッケージ化
ビルドが成功し、テストがパスした後には、結果のJavaのパッケージをビルドの成果物としてアップロードすることになるかもしれません。 そうすれば、ビルドされたパッケージをワークフローの実行の一部として保存することになり、それらをダウンロードできるようになります。 成果物によって、Pull Requestをマージする前にローカルの環境でテスト及びデバッグしやすくなります。 詳しい情� �については「成果物を利用してワークフローのデータを永続化する」を参照してく� さい。
Gradleは通常、JAR、EAR、WARのような出力ファイルをbuild/libsディレクトリに作成します。 このディレクトリの内容はupload-artifactアクションを使ってアップロードできます。
steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 with: java-version: '11' distribution: 'adopt' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - name: Build with Gradle uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee with: arguments: build - uses: actions/upload-artifact@v2 with: name: Package path: build/libs