Java アプリケーションのビルドとテスト

このページでは、Cloud Build を使用して Java ベースのアプリケーションのビルドとテストを行い、ビルドされたアーティファクトを Artifact Registry の Maven リポジトリに保存し、ビルドの場所情報を生成する方法について説明します。

始める前に

  • Java ベースのアプリケーションの作成に精通している必要があります。
  • Maven について理解する
  • Java プロジェクトを準備します。
  • Cloud Build 構成ファイルの作成方法に精通している必要があります。
  • Maven リポジトリを Artifact Registry に登録します。リポジトリがない場合は、新しいリポジトリを作成します。
  • このページで gcloud コマンドを実行するには、Google Cloud CLI をインストールします。

maven イメージの使用

Java アプリケーションをビルドするように Cloud Build を構成するには、Docker Hub から maven イメージを使用します。

maven イメージでタスクを実行するには、イメージの URL とイメージのタグ付きバージョンをビルド構成ファイルの name フィールドに指定します。イメージタグを指定しない場合、Cloud Build はデフォルトで latest イメージを使用します。Cloud Build は、イメージのデフォルトのエントリポイントを使用して、name に指定されたイメージを起動します。デフォルトのエントリポイントをオーバーライドして、エントリポイントとして maven を呼び出すには、entrypoint フィールドに mvn を指定します。

次のビルド構成ファイルでは、maven イメージの entrypoint を指定し、ビルドツール バージョンを出力します。

          steps:
          - name: maven:3.3-jdk-8
            entrypoint: mvn
            args: ['--version']

Java ビルドを構成する

  1. プロジェクトのルート ディレクトリに、cloudbuild.yaml という名前でビルド構成ファイルを作成します。

  2. テストを実行する: maven は、依存関係のダウンロード、アプリケーションのビルド、ソースコードで指定されたテストの実行を行う maven test を提供します。ビルドステップの args フィールドは引数のリストを受け取り、name フィールドによって参照されるイメージに渡します。

    ビルド構成ファイルで、args フィールドに test を追加します。これにより、maven 内で test を呼び出します。

         steps:
         - name: maven:3.3-jdk-8
           entrypoint: mvn
           args: ['test']
    
  3. アプリケーションをパッケージ化する: maven イメージでアプリケーションを JAR ファイルにパッケージ化するには、args フィールドに package コマンドを指定します。package コマンドにより、/workspace/target/ に JAR ファイルがビルドされます。

    次のビルドステップでは、Java アプリケーションをパッケージ化します。

         steps:
         - name: maven:3.3-jdk-8
           entrypoint: mvn
           args: ['package','-Dmaven.test.skip=true']
    
  4. Artifact Registry にアップロードする:

    Cloud Build 構成ファイルの mavenArtifacts フィールドを使用してアーティファクトを Artifact Registry にアップロードすると、Cloud Build がスタンドアロン Maven パッケージのサプライ チェーン レベルのサプライ チェーン レベル(SLSA)をビルドします。

    ビルド構成ファイルで、mavenArtifacts フィールドを使用して、Artifact Registry のアプリケーション ファイルのパスと Maven リポジトリを指定します。

    artifacts:
      mavenArtifacts:
      - repository: 'https://location-maven.pkg.dev/project-id/repository-name'
        path: 'app-path'
        artifactId: 'build-artifact'
        groupId: 'group-id'
        version: 'version'
    

    次の値を置き換えます。

    • location: Artifact Registry 内のリポジトリのロケーション
    • project-id: Artifact Registry リポジトリを含む Google Cloud プロジェクトの ID。
    • repository-name: Artifact Registry 内の Maven リポジトリの名前。
    • app-path: パッケージングされたアプリケーションへのパス。
    • build-artifact: ビルドステップで作成されたパッケージ ファイルの名前。
    • group-id: すべての Maven プロジェクト間でプロジェクトを一意に識別します(形式は com.mycompany.app)。詳しくは、Maven の命名規則ガイドをご覧ください。
    • version: アプリケーションのバージョン番号。1.0.1 のような、数字とドットでフォーマットされます。
  5. 省略可: リージョン ビルドで来歴を有効にする

    リージョン ビルドを使用している場合は、ビルド構成ファイルの optionsrequestedVerifyOption フィールドを追加します。来歴メタデータの生成を有効にするには、値を VERIFIED に設定します。requestedVerifyOption: VERIFIED を追加しない場合、Cloud Build はグローバル ビルドでのみ来歴を生成します。

    options:
      requestedVerifyOption: VERIFIED
    
  6. 手動またはビルドトリガーを使用してビルドを開始します。

    ビルドが完了したら、Artifact Registry でリポジトリの詳細を表示できます。

    ビルドの場所のメタデータを表示して、来歴を検証して、ソフトウェア サプライ チェーンを保護することもできます。

次のステップ