メモ
GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。
はじめに
このガイドでは、Ant ビルド システムを使用して、Java プロジェクトの継続的インテグレーション (CI) を実行するワークフローを作成する方法について説明します。 作成するワークフローによって、プルリクエストに対するコミットがデフォルトブランチに対してビルドあるいはテストの失敗を引き起こしたことを見ることができるようになります。このアプローチは、コードが常に健全であることを保証するための役に立ちます。 CIワークフローを拡張して、ワークフローの実行による成果物をアップロードするようにもできます。
GitHub がホストするランナーには、Java Development Kits (JDK) 及び Ant を含むプリインストールされたソフトウェアを備えたツール キャッシュがあります。 JDK と Ant に関するソフトウェアとプレインストールされたバージョンの一覧については、「GitHub ホステッド ランナー」を参照してください。
前提条件
YAMLとGitHub Actionsの構文に馴染んでいる必要があります。 詳細については、以下を参照してください: * GitHub Actions のワークフロー構文 * ワークフローの書き込み
Javaと Ant フレームワークの基本的な理解をお勧めします。 詳細については、Apache Ant マニュアルを参照してください。
GitHub Enterprise Server上でのセルフホストランナーの利用
GitHub Enterprise Server でセルフホスト ランナーと合わせてセットアップ アクション (actions/setup-LANGUAGE など) を使用するときに、インターネットにアクセスできないランナー上にツール キャッシュを設定する必要がある場合があります。 詳しくは、「インターネットにアクセスできないセルフホストランナーにツールキャッシュを設定する」をご覧ください。
Ant ワークフロー テンプレートの使用
すぐに開始するには、リポジトリの .github/workflows ディレクトリにワークフロー テンプレートを追加します。
GitHub には、Ant プロジェクトを使用するほとんどのJavaで動作する必要がある Ant のワークフロー テンプレートが用意されています。 このガイドの以降のセクションでは、このワークフロー テンプレートをカスタマイズする方法の例を示します。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [ Actions] をクリックします。
!["github/docs" リポジトリのタブのスクリーンショット。 [アクション] タブがオレンジ色の枠線で強調表示されています。](/assets/cb-12958/images/help/repository/actions-tab-global-nav-update.png)
-
ワークフローが既にリポジトリ内にある場合は、 [新しいワークフロー] をクリックします。
-
[ワークフローの選択] ページには、推奨されるワークフロー テンプレートの選択が表示されます。 "Ant でJava" を検索します。
-
"Ant を使用したJava" ワークフローで、Configure をクリックします。
"Ant でJava" ワークフロー テンプレートが見つからない場合は、次のワークフロー コードを、リポジトリの
ant.ymlディレクトリにある.github/workflowsという新しいファイルにコピーします。YAML name: Java CI on: push: branches: [ $default-branch ] pull_request: branches: [ $default-branch ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Set up JDK 11 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' - name: Build with Ant run: ant -noinput -buildfile build.xmlname: Java CI on: push: branches: [ $default-branch ] pull_request: branches: [ $default-branch ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Set up JDK 11 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' - name: Build with Ant run: ant -noinput -buildfile build.xml -
必要に応じてワークフローを編集します。 たとえば、Javaバージョンを変更します。
-
**[Commit changes]** をクリックします。
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@v5
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
steps:
- uses: actions/checkout@v5
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
詳細については、「setup-java アクション」を参照してください。
コードのビルドとテスト
ローカルで使うのと同じコマンドを、コードのビルドとテストに使えます。
このワークフロー テンプレートは、build.xml ファイルで指定された既定のターゲットを実行します。 デフォルトのターゲットは、一般的にクラスをビルドし、テストを実行し、たとえばJARファイルのような配布可能なフォーマットにクラスをパッケージするように設定されるでしょう。
プロジェクトのビルドに異なるコマンドを使ったり、異なるターゲットを実行したいのであれば、それらを指定できます。 たとえば、build-ci.xml ファイルで構成されている jar ターゲットを実行できます。
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Ant jar target
run: ant -noinput -buildfile build-ci.xml jar
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Ant jar target
run: ant -noinput -buildfile build-ci.xml jar
成果物としてのワークフローのデータのパッケージ化
ビルドが成功し、テストが成功したら、結果のJava パッケージをビルド成果物としてアップロードできます。 そうすれば、ビルドされたパッケージをワークフローの実行の一部として保存することになり、それらをダウンロードできるようになります。 アーティファクトを利用して、Pull Requestをマージする前にローカル環境でテストとデバッグを行うことができます。 詳しくは、「ワークフロー成果物を使ったデータの格納と共有」をご覧ください。
Ant では、通常、JAR、EAR、WAR のような出力ファイルが build/jar ディレクトリに作成されます。
upload-artifact アクションを使用して、そのディレクトリの内容をアップロードできます。
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- run: ant -noinput -buildfile build.xml
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/jar
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- run: ant -noinput -buildfile build.xml
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/jar