このページでは、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
ビルドを構成する
プロジェクトのルート ディレクトリに、
cloudbuild.yaml
という名前でビルド構成ファイルを作成します。テストを実行する:
maven
は、依存関係のダウンロード、アプリケーションのビルド、ソースコードで指定されたテストの実行を行うmaven test
を提供します。ビルドステップのargs
フィールドは引数のリストを受け取り、name
フィールドによって参照されるイメージに渡します。ビルド構成ファイルで、
args
フィールドにtest
を追加します。これにより、maven
内でtest
を呼び出します。steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']
アプリケーションをパッケージ化する:
maven
イメージでアプリケーションを JAR ファイルにパッケージ化するには、args
フィールドにpackage
コマンドを指定します。package
コマンドにより、/workspace/target/
に JAR ファイルがビルドされます。次のビルドステップでは、Java アプリケーションをパッケージ化します。
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['package','-Dmaven.test.skip=true']
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
のような、数字とドットでフォーマットされます。
省略可: リージョン ビルドで来歴を有効にする
リージョン ビルドを使用している場合は、ビルド構成ファイルの
options
にrequestedVerifyOption
フィールドを追加します。来歴メタデータの生成を有効にするには、値をVERIFIED
に設定します。requestedVerifyOption: VERIFIED
を追加しない場合、Cloud Build はグローバル ビルドでのみ来歴を生成します。options: requestedVerifyOption: VERIFIED
手動またはビルドトリガーを使用してビルドを開始します。
ビルドが完了したら、Artifact Registry でリポジトリの詳細を表示できます。
ビルドの場所のメタデータを表示して、来歴を検証して、ソフトウェア サプライ チェーンを保護することもできます。
次のステップ
- ビルド結果を表示する方法を学習する。
- ビルドを保護する方法を確認する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。
- Java アプリケーションをビルドしてコンテナ化する方法を学習する。
- Cloud Run でアプリケーションをデプロイする方法を学習する。
- GKE でアプリケーションをデプロイする方法を学習する。
- ビルドエラーをトラブルシューティングする方法について学習する。