ビルドを実行すると、Cloud Build がビルドログをログバケットに収集して保存します。ビルド構成ファイルの設定に基づいて、ビルドログは Cloud Logging バケット、Cloud Storage バケット、またはその両方に保存されます。ログを格納する Logging バケットまたは Cloud Storage バケットのタイプを構成することもできます。バケットのロケーションとタイプは、ビルドログを分析する機能と、バケット設定を制御できる範囲に影響します。
概要
ビルド構成ファイルを設定する際は、次の点を考慮してください。
保存されたビルドログの保持期間を制御する場合は、Logging に送信します。Logging のログビューアでは、Cloud Storage と比較して、特定のビルドログをバケットで検索するためのオプションも多く用意されています。ただし、Logging を使用する場合、ビルドログが生成されてから Logging が受信するまでに遅延が生じることがあります。
ビルドログが生成されてから Cloud Storage で使用できるようになるまでのレイテンシを短縮する場合は、ビルドログを Cloud Storage のバケットに送信します。
バケットの所有権は、保存されたビルドログの操作方法にも影響します。たとえば、ユーザー所有のバケットでは バケットの設定を構成できますが、 Google Cloud所有のバケットは Google Cloud によって作成され、ユーザーが変更することはできません。Logging と Cloud Storage には、ビルドログを受信するバケットのタイプを構成するためのオプションがいくつか用意されています。
バケットのロケーション
ビルドログの送信先を決定するには、ビルド構成ファイルで logging フィールドを
設定します。
GCS_ONLY: ビルドログは Cloud Storage バケットに送信されます。CLOUD_LOGGING_ONLY: ビルドログは Logging バケットに送信されます。LEGACY: ビルドログは両方のロケーションのバケットに送信されます。loggingが未定義の場合、Cloud Build はこの値を使用します。NONE: ビルドログは保存されません。
ビルドログを Logging に送信する場合は、Cloud Logging のルーティング構成で Logging バケットのオプションについてご確認ください。ビルドログを Cloud Storage に送信する場合は、使用可能な Cloud Storage バケットについて次のセクションをご覧ください。バケットの 所有権に関する考慮事項セクションでは、 バケットのロケーションに関係なく、 バケットの所有権に基づくバケットのメリットと考慮事項について説明します。
Cloud Storage のバケット オプション
ビルドログが Cloud Storage に送信される場合、Cloud Build
はビルド構成ファイルの logsBucket
と
defaultLogsBucketBehavior
フィールドを評価して、ビルドログを受信する Cloud Storage
バケットのタイプを決定します。
logsBucket フィールドには、任意のタイプのバケットを指定できます。logsBucket が定義されている場合、defaultLogsBucketBehavior の値に関係なく、ログは常に Cloud Storage のそのバケットに送信されます。logsBucket が未定義の場合、defaultLogsBucketBehavior の値は次のように使用されます。
REGIONAL_USER_OWNED_BUCKET: ビルドログは、Cloud Build によって作成された、Cloud Storage のユーザー所有のバケットに送信されます。 このバケットはユーザーのプロジェクトにあり、ビルドと同じリージョンを使用します。LEGACY_BUCKET: ビルドログは、Cloud Build によって作成された 所有の Google Cloudプロジェクトの所有のバケットに送信されます。 Google Cloudこの値は、このフィールドを未定義のままにするのと同じです。
Dockerfile からビルドする際のログストレージ
Dockerfile からビルドする際にビルドログのストレージを設定するには、
default-buckets-behavior フラグ値のいずれかを含めます。gcloud builds
submit の実行時
regional-user-owned-bucket: ビルドログは、Cloud Build によって作成された、Cloud Storage のユーザー所有のバケットに送信されます。 このバケットはユーザーのプロジェクトにあり、ビルドと同じリージョンを使用します。legacy-bucket: ビルドログは、Cloud Build によって作成された 所有の Google Cloudプロジェクトの Google Cloud所有のバケットに送信されます。 この値は、このフィールドを未定義のままにするのと同じです。
バケットの所有権に関する考慮事項
Cloud Storage と Logging のどちらを使用する場合でも、ビルドログはユーザー所有のバケットに送信することをおすすめします。これは、ユーザーが作成したバケット(たとえば、作成したバケットに logsBucket を設定した場合)か、Cloud Build によって作成されたがユーザー所有のバケット(たとえば、リージョン ユーザー所有のバケットの設定を構成した場合)のいずれかになります。これにより、バケットの特定のプロパティを編集し、バケット内のログをいつでも表示できます。所有のバケットは Google CloudGoogle Cloud所有のプロジェクトにあるため、バケットを表示または編集することはできません。ビルドログは、[Build log] セクションの [Build details] ページでのみ表示できます。
一般に、ユーザーが作成したバケットは、バケットの作成中と作成後の両方でバケット設定を構成する際に最も柔軟性があります。ただし、この場合、ユーザーが作成したバケットがビルドのニーズに合っていることを常に確認する必要があります。バケット リージョンの管理など、Cloud Build によって作成されたユーザー所有のバケットを使用すると、ビルドログをデフォルトで Cloud Storage で使用できるバケットに送信できます。このバケットは常にビルドと同じリージョンにあります。次のセクションでは、このユースケースについて詳しく説明します。
バケット リージョンに関する考慮事項
データ所在地に関する要件に準拠できるように、ビルドのリージョンに合わせてビルドバケットを構成することをおすすめします。このようにリージョンを調整する場合は、次の点を考慮してください。
Logging と Cloud Storage のユーザー作成バケットは、バケットの作成時に定義されたリージョンを使用します。ユーザーが作成したバケットをビルドの
logging値として設定する場合は、そのリージョンがビルド リージョンと一致していることを確認してください。Cloud Storage でリージョン ユーザー所有のバケットを使用するようにビルドログを構成した場合、ビルドログは常にビルドと同じリージョンのバケットに送信されます。
Google Cloud所有のバケットは、 Google Cloud定義された リージョンに設定されます。そのため、このリージョンがビルドのリージョンと常に一致するとは限りません。
既存のビルド構成ファイルに defaultLogsBucketBehavior を追加する
以前に logging または logsBucket を構成した既存のビルド構成ファイルに defaultLogsBucketBehavior
オプションを追加する場合は、ログが意図したとおりに保存されるように、すべてのログストレージ設定を評価することをおすすめします。次のいずれかに該当する場合、Cloud
Build は defaultLogsBucketBehavior を無視します。
loggingがCLOUD_LOGGING_ONLYまたはNONEに設定されている。loggingがGCS_ONLYまたはLEGACYに設定され、logsBucketが定義されている。
ビルド構成ファイルでログストレージ フィールドが定義されていないビルドを実行すると、Cloud Build は logging を LEGACY に設定します。
次のステップ
- ビルドログを保存、表示、削除する方法を学習する
- Cloud Build によって作成される監査ログについて学習する。
- ビルド結果を表示する方法を学習する。
- Cloud Build IAM 権限の詳細を確認する。