ビルドを実行すると、Cloud Build がビルドログを収集して保存します。このページでは、ビルドログを保存、表示、削除する方法について説明します。
ビルドログの保存場所の選択
ビルドログを Cloud Logging または Cloud Storage に保存するように Cloud Build を構成するには、Cloud Build 構成ファイルに logging
フィールドを追加します。ビルド構成ファイルで logging
フィールドを指定しない場合、Cloud Build は Logging と Cloud Storage の両方にビルドログを保存します。
次の手順では、ビルドログを Logging にのみ保存します。
ビルド構成ファイルで、
logging
の値をCLOUD_LOGGING_ONLY
に設定します。YAML
steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/myproject/myimage', '.'] options: logging: CLOUD_LOGGING_ONLY
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/myproject/myimage", "." ] } ], "options": { "logging": "CLOUD_LOGGING_ONLY" } }
ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。
Google が作成したデフォルト バケットへのビルドログの保存
デフォルトでは、Cloud Build は Google が作成した Cloud Storage バケットにビルドログを保存します。Google が作成した Cloud Storage バケットでビルドログ ストアを表示できますが、それ以外の変更はできません。ログバケットを完全に制御する必要がある場合は、ユーザー作成の Cloud Storage バケットにログを保存します。
ユーザーが作成したバケットへのビルドログの保存
IAM の権限:
独自の Cloud Storage バケットにビルドログを保存するには、まず必要な IAM 権限を Cloud Build サービス アカウントまたはユーザー指定のサービス アカウントに付与する必要があります。
Cloud Storage バケットと Cloud Build が同じ Cloud プロジェクトにあり、Cloud Build サービス アカウントを使用している場合、Cloud Build サービス アカウントには必要な IAM 権限がデフォルトで付与されます。別途権限を付与する必要はありません。
Cloud Storage バケットと Cloud Build が同じ Cloud プロジェクト内にあり、ユーザー指定のサービス アカウントを使用している場合は、ストレージ管理者ロールをサービス アカウントに付与します。サービス アカウントにロールを付与する手順については、プロジェクトでのロールの付与をご覧ください。
Cloud Storage バケットと Cloud Build が異なる Cloud プロジェクトに存在する場合は、Cloud Build サービス アカウントにストレージ管理者のロールを付与します。
[IAM] ページを開きます。
Cloud Build を使用してビルドを実行するプロジェクトを選択します。
権限の表で、末尾が
@cloudbuild.gserviceaccount.com
のメールアドレスを見つけてメモします。これは Cloud Build サービス アカウントです。Cloud Storage バケットが配置されているプロジェクトの [IAM] ページを開きます。
[追加] をクリックします。
Cloud Build サービス アカウントのメールアドレスを入力します。
[Cloud Storage] > [Storage Admin] を選択します。
[保存] をクリックします。
ビルドログを保存する Cloud Storage バケットを指定するには:
Cloud プロジェクトで、ビルドログを保存する Cloud Storage バケットを作成します。
ビルド構成ファイルに、ビルドログを保存するために作成した Cloud Storage バケットを指す
logsBucket
フィールドを追加します。次のビルド構成ファイルの例では、コンテナ イメージをビルドし、ビルドログをmylogsbucket
という名前のバケットに保存します。YAML
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'gcr.io/myproject/myimage', '.' ] logsBucket: 'gs://mylogsbucket' options: logging: GCS_ONLY
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/myproject/myimage", "." ] } ], "logsBucket": "gs://mylogsbucket", "options": { "logging": "GCS_ONLY" } }
ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。
ビルドが完了すると、Cloud Build はビルド構成ファイルで指定した Cloud Storage バケットにログを保存します。
ビルドログの表示
IAM の権限:
ビルドログが Logging にある場合、ビルドログを表示するプリンシパルにビルドが構成されているプロジェクトのログ閲覧者のロールを付与します。
[IAM] ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
権限の表でプリンシパルのメール ID を探し、鉛筆アイコンをクリックします。
[ロギング] > [ログ閲覧者] ロールを選択します。
[保存] をクリックします。
ビルドログが Google 作成のデフォルトの Cloud Storage バケットに存在する場合、ビルドログを表示したいプリンシパルに、ビルドが構成されているプロジェクトのプロジェクト閲覧者ロールを付与します。
[IAM] ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
権限の表でプリンシパルのメール ID を探し、鉛筆アイコンをクリックします。
[プロジェクト] > [閲覧者] のロールを選択します。
[保存] をクリックします。
ビルドログがユーザー指定の Cloud Storage バケットに存在する場合、ビルドログを表示したいプリンシパルにストレージ オブジェクト閲覧者のロールを付与します。
[IAM] ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
権限の表でプリンシパルのメール ID を探し、鉛筆アイコンをクリックします。
[Cloud Storage] > [Storage Object Viewer] のロールを選択します。
[保存] をクリックします。
ビルドログを表示するには:
Console
Google Cloud Console で Cloud Build ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
[ビルド履歴] ページで、特定のビルドをクリックします。
[ビルドの詳細] ページの [ステップ] で、[ビルドの概要] をクリックしてビルド全体のビルドログを表示するか、ビルドステップをクリックして対象のステップのビルドログを表示します。
Logging に保存されているログの場合は、[ビルドログ] パネルで
アイコンをクリックしてログ エクスプローラでログを表示します。
gcloud
gcloud builds log
コマンドを実行します。ここで、build-id はビルドログを取得するビルドの ID です。ビルド ID は、gcloud builds submit
の実行時にビルド送信プロセスの最後に表示されるか、gcloud builds list
の実行時に ID 列に表示されます。
gcloud builds log build-id
ビルドログの削除
Google が作成したログバケットからビルドログを削除することはできません。
ユーザー作成のログバケットからビルドログを削除する場合は、以下の手順に従います。
ログを削除するユーザーまたはサービス アカウントにストレージ オブジェクト管理者のロールを付与します。
オブジェクトの削除に記載の Cloud Storage オブジェクトを削除する手順に従って、ビルドログを削除します。
ユーザー作成のログバケットを削除するには、以下の手順に従います。
ログバケットを削除するユーザーまたはサービス アカウントにストレージ管理者のロールを付与します。
バケットの削除に記載のバケットを削除するための手順に従い、ログバケットを削除します。
次のステップ
- Cloud Build によって作成される監査ログについて学習する。
- ビルド結果を表示する方法を学習する。
- Build Cloud IAM 権限の詳細を確認する。