ビルド構成ファイルをセットアップして、ビルドログをログバケットに保存します。これにより、Cloud Logging と Cloud Storage のツールを使用して、ビルドログをグループ化して分析できます。ビルドログのストレージを構成すると、ログの保存と分析をより詳細に制御できます。ビルドログの保存設定を未定義のままにすると、Cloud Build は Google Cloud所有のバケットにログを保存します。この場合、ビルドログの分析オプションは少なくなります。
このページでは、さまざまなタイプのバケットにビルドログを保存する方法と、保存したログを表示および削除する方法について説明します。
始める前に
ビルドログの保存を構成するためのビルド構成ファイル オプションと、バケットの所有権がログのアクセシビリティに与える影響について理解しておいてください。詳細については、ビルドログのストレージ オプションをご覧ください。
ユーザーが作成したバケットにビルドログを保存する
ユーザーが作成したバケットを使用すると、バケットの管理と構成をより細かく制御できます。
ユーザーが作成した Cloud Logging バケットにビルドログを保存する
ユーザーが作成した Logging バケットを使用すると、保存されたビルドログの保持期間を調整できます。Logging のユーザーが作成したバケットにビルドログを保存するには、次の操作を行います。
IAM 権限を付与する:
ユーザーが作成した Cloud Logging バケットにビルドログを保存するために必要な権限を取得するには、プロジェクトのアカウントまたはサービス アカウントに対するログ設定書き込み (roles/logging.configWriter)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Logging バケットを構成します。
バケットを作成し、[保持期間] フィールドの値を設定します。
シンクを作成して、ビルドログを新しいバケットに転送します。
シンクの包含フィルタの作成に、次のように入力します。
logName = "projects/PROJECT_ID/logs/cloudbuild"PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
(省略可)ビルドログがデフォルトの Logging バケットに送信されないようにするには、ログバケットへのログエントリの保存を停止するの例に従います。
ユーザーが作成した Cloud Storage バケットにビルドログを保存する
ユーザーが作成した Cloud Storage バケットにビルドログを保存するには、次の操作を行います。
IAM 権限を付与する:
Cloud Storage バケットと Cloud Build が同じ Google Cloud プロジェクトにあり、Cloud Build の従来のサービス アカウントを使用している場合、Cloud Build の従来のサービス アカウントには必要な IAM 権限がデフォルトで付与されています。別途権限を付与する必要はありません。まだ完了していない場合は、次の操作を行います。
ユーザーが作成した Cloud Storage バケットにビルドログを保存するために必要な権限を取得するには、ビルドに使用するサービス アカウントに対するストレージ管理者 (roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Storage バケットを構成します。
Google Cloud プロジェクトで、保持ポリシーを設定せずに、ビルドログを保存する Cloud Storage バケットを作成します。
ビルド構成ファイルに、ビルドログを保存するために作成した Cloud Storage バケットを指す
logsBucketフィールドを追加します。次のビルド構成ファイルの例では、コンテナ イメージをビルドし、ビルドログをmylogsbucketという名前のバケットに保存します。YAML
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ] logsBucket: 'gs://mylogsbucket' options: logging: GCS_ONLYJSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-east1-docker.pkg.dev/myproject/myimage", "." ] } ], "logsBucket": "gs://mylogsbucket", "options": { "logging": "GCS_ONLY" } }ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。
ビルドが完了すると、Cloud Build はビルド構成ファイルで指定した Cloud Storage バケットにビルドログを保存します。
リージョン固有の Cloud Storage バケットにビルドログを保存する
Cloud Build がビルドと同じリージョンにあるユーザー所有の Cloud Storage バケットにビルドログを送信するようにビルドを構成できます。ビルドとビルドログの保存バケットのリージョンを調整すると、データ所在地の要件を満たすことができます。
IAM 権限を付与する:
Cloud Storage バケットと Cloud Build が同じ Google Cloud プロジェクトにあり、Cloud Build の従来のサービス アカウントを使用している場合、そのサービス アカウントには必要な IAM 権限がデフォルトで付与されています。別途権限を付与する必要はありません。まだ完了していない場合は、次の操作を行います。
ユーザー所有のリージョン固有のバケットにビルドログを保存するために必要な権限を取得するには、ビルドに使用するサービス アカウントに対するストレージ管理者 (roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
リージョン固有の Cloud Storage バケットを構成します。
ビルド構成ファイルで、
defaultLogsBucketBehaviorオプションを追加し、その値をREGIONAL_USER_OWNED_BUCKETに設定します。YAML
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ] options: defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKETJSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-central1-docker.pkg.dev/myproject/myrepo/myimage", "." ] } ], "options": { "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET" } }ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。
ビルドを実行すると、Cloud Build はビルドを実行しているリージョンに新しいバケットを作成し、そのバケットにビルドログを保存します。
REGIONAL_USER_OWNED_BUCKETが有効である限り、同じプロジェクトとリージョンの後続のビルドでは既存のバケットが使用されます。このバケットはユーザー所有であるため、ユーザー作成のバケットと同様に構成できます。REGIONAL_USER_OWNED_BUCKETオプションを設定して複数のリージョンでビルドを作成すると、Cloud Build は一意のリージョンごとに Cloud Storage バケットを作成します。
ビルドのリージョンとログバケットを調整する必要がある場合は、ユーザーが作成したバケットを使用することもできます。この場合は、同じリージョンにある既存のユーザー作成バケットを選択するか、バケットを作成します。作成する場合は、ユーザーが作成したバケットにビルドログを保存するの手順に沿って、ユーザーが作成したバケットがビルドと同じリージョンにあることを確認します。
ビルドログを表示する
ビルドログを表示する手順は次のとおりです。
IAM 権限を付与する:
Cloud Storage または Logging でビルドログを表示するために必要な権限を取得するには、ビルドに使用するサービス アカウントに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
ユーザーが作成または所有する Cloud Storage バケットでビルドログを表示する:
- Storage オブジェクト閲覧者(
roles/storage.objectViewer) - ビルドログを表示するプリンシパル - ログ表示アクセス者(
roles/logging.viewAccessor) - ビルドログを表示するプリンシパル
- Storage オブジェクト閲覧者(
-
デフォルトの Cloud Storage バケットでビルドログを表示する: 閲覧者(
roles/viewer) - ビルドが構成されているプロジェクト -
ロギングでビルドログを表示する: ログビューア(
roles/logging.viewer) - ビルドログを表示するプリンシパル
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Google Cloudでビルドログを表示する
コンソール
Google Cloud コンソールで Cloud Build ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
[リージョン] プルダウン メニューで、ビルドのリージョンを選択します。
[ビルド履歴] ページで、特定のビルドを選択します。
[ビルドの詳細] ページの [ステップ] で、[ビルドの概要] をクリックしてビルド全体のビルドログを表示するか、ビルドステップを選択して対象のステップのビルドログを表示します。
ビルドログが Logging に保存されている場合は、[ビルドログ] パネルで アイコンをクリックして、ログ エクスプローラでログを表示します。
gcloud
gcloud builds log コマンドを実行します。ここで、build-id はビルドログを取得するビルドの ID です。ビルド ID は、gcloud builds submit の実行時にビルド送信プロセスの最後に表示されるか、gcloud builds list の実行時に ID 列に表示されます。
gcloud builds log build-id
GitHub と GitHub Enterprise でビルドログを表示する
gcloud CLI または Cloud Build API を使用して GitHub トリガーまたは GitHub Enterprise トリガーを作成し、オプションとして --include-logs-with-status を指定した場合、GitHub と GitHub Enterprise でビルドログを表示できます。
GitHub と GitHub Enterprise でビルドログを表示するには:
トリガーに関連付けられているリポジトリに移動します。
commit のリストに移動します。
ビルドログを表示するコミットの行を見つけます。
commit の行にある結果アイコンをクリックします。
commit に関連付けられているチェックのリストが表示されます。
ビルドログを表示する行の [詳細] をクリックします。
commit に関連付けられている [概要] ページが表示されます。
--include-logs-with-statusフラグを使用してトリガーを作成した場合、ページの [詳細] セクションにビルドログが表示されます。
ビルドログとバケットを削除する
Cloud Storage でビルドログとバケットを削除するために必要な権限を取得するには、ビルドに使用するサービス アカウントに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
ユーザー作成またはユーザー所有の Cloud Storage バケットからビルドログを削除する: ストレージ管理者(
roles/storage.admin) - ビルドログを削除するユーザーまたはサービス アカウント -
ユーザーが作成または所有する Cloud Storage バケットを削除する: ストレージ管理者(
roles/storage.admin) - バケットを削除するユーザーまたはサービス アカウント -
ユーザー作成の Logging バケットを削除する: ログ構成書き込み(
roles/logging.configWriter)- プロジェクト
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ユーザーが作成または所有する Cloud Storage バケット内のビルドログを削除するには、Cloud Storage ドキュメントのオブジェクトの削除の手順に沿って操作します。
ユーザーが作成または所有する Cloud Storage バケットを削除するには、Cloud Storage ドキュメントのバケットの削除の手順に沿って操作します。
ユーザーが作成した Logging バケットを削除するには、Logging ドキュメントのバケットを削除するの手順に沿って操作します。
次のステップ
- Cloud Build によって作成される監査ログについて学習する。
- ビルド結果を表示する方法を学習する。
- Build Cloud IAM 権限の詳細を確認する。