ビルドログの保存と管理

ビルドを実行すると、Cloud Build がビルドログを収集して保存します。このページでは、ビルドログを保存、表示、削除する方法について説明します。

ビルドログの保存場所の選択

ビルドログを Cloud Logging または Cloud Storage に保存するように Cloud Build を構成するには、Cloud Build 構成ファイルlogging フィールドを追加します。 ビルド構成ファイルに logging フィールドを指定しない場合、Cloud Build は Logging と Cloud Storage の両方にビルドログを保存します。

次の手順では、ビルドログは Logging にのみ保存されます。

  1. ビルド構成ファイルで、logging の値を CLOUD_LOGGING_ONLY に設定します。

    YAML

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.']
    options:
      logging: CLOUD_LOGGING_ONLY
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
          "build",
          "-t",
          "us-east1-docker.pkg.dev/myproject/myimage",
          "."
        ]
      }
      ],
      "options": {
        "logging": "CLOUD_LOGGING_ONLY"
      }
    }
    
  2. ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。

Google が作成したデフォルト バケットへのビルドログの保存

デフォルトでは、Cloud Build は Google が作成した Cloud Storage バケットにビルドログを保存します。Google が作成した Cloud Storage バケットでビルドログ ストアを表示できますが、それ以外の変更はできません。ログバケットを完全に制御する必要がある場合は、ユーザー作成の Cloud Storage バケットにログを保存します。

ユーザーが作成したバケットへのビルドログの保存

IAM の権限:

独自の Cloud Storage バケットにビルドログを保存するには、まず必要な IAM 権限を Cloud Build サービス アカウントまたはユーザー指定のサービス アカウントに付与する必要があります。

  • Cloud Storage バケットと Cloud Build が同じ Google Cloud プロジェクト内にあり、Cloud Build サービス アカウントを使用している場合、Cloud Build サービス アカウントには必要な IAM 権限がデフォルトで付与されます。別途権限を付与する必要はありません。

  • Cloud Storage バケットと Cloud Build が同じ Google Cloud プロジェクト内にあり、ユーザー指定のサービス アカウントを使用している場合は、ストレージ管理者ロールをサービス アカウントに付与します。サービス アカウントにロールを付与する手順については、プロジェクトでのロールの付与をご覧ください。

  • Cloud Storage バケットと Cloud Build が異なる Google Cloud プロジェクトに存在する場合は、Cloud Build サービス アカウントストレージ管理者のロールを付与します。

    1. [IAM] ページを開きます。

      [IAM] ページを開く

    2. Cloud Build を使用してビルドを実行するプロジェクトを選択します。

    3. 権限の表で、末尾が @cloudbuild.gserviceaccount.com のメールアドレスを見つけてメモします。これは Cloud Build サービス アカウントです。

    4. Cloud Storage バケットが配置されているプロジェクトの [IAM] ページを開きます。

      [IAM] ページを開く

    5. [アクセス権を付与] をクリックします。

    6. Cloud Build サービス アカウントのメールアドレスを入力します。

    7. [Cloud Storage] > [Storage Admin] を選択します。

    8. [保存] をクリックします。

ビルドログを保存する Cloud Storage バケットを指定するには:

  1. Google Cloud プロジェクトで、保持ポリシーを設定せずに、ビルドログを保存する Cloud Storage バケットを作成します。

  2. ビルド構成ファイルに、ビルドログを保存するために作成した 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_ONLY
    

    JSON

        {
          "steps": [
           {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
               "build",
               "-t",
               "us-east1-docker.pkg.dev/myproject/myimage",
               "."
             ]
           }
           ],
           "logsBucket": "gs://mylogsbucket",
           "options": {
             "logging": "GCS_ONLY"
           }
        }
    
  3. ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。

ビルドが完了すると、Cloud Build はビルド構成ファイルで指定した Cloud Storage バケットにログを保存します。

ユーザー所有のリージョン化されたバケットへのビルドログの保存

Cloud Build はデフォルトで、ビルドを実行するロケーションとは異なる Google 指定リージョンにビルドログを保存します。defaultLogsBucketBehavior オプションを使用すると、自分のプロジェクト内でビルドと同じリージョンにデフォルトのログバケットを使用するように Cloud Build を構成できます。この構成により、ログデータのロケーションをより細かく制御でき、データ所在地の要件の遵守に役立ちます。

独自のプロジェクトにログを保存するための費用が発生します。価格設定の詳細については、Cloud Storage の料金体系をご覧ください。

リージョン化されたユーザー所有のログを使用するように Cloud Build を構成します。

  1. 必要な IAM 権限を付与します。

    • Cloud Build サービス アカウントを使用している場合、Cloud Build サービス アカウントには必要な IAM 権限がデフォルトで付与されます。別途権限を付与する必要はありません。

    • ユーザー指定のサービス アカウントを使用している場合は、サービス アカウントにストレージ管理者のロールを付与します。サービス アカウントにロールを付与する手順については、プロジェクトでのロールの付与をご覧ください。

  2. ビルド構成で、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_BUCKET
    

    JSON

    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "build",
            "-t",
            "us-central1-docker.pkg.dev/myproject/myrepo/myimage",
            "."
          ]
        }
        ],
        "options": {
          "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
        }
    }
    
  3. ビルド構成ファイルを使用して、コマンドライン、API、またはトリガーでビルドを開始します。

    ビルドを実行すると、Cloud Build はビルドを実行するリージョンに新しいログバケットを作成し、そのバケットをビルドログに保存します。同じプロジェクトとリージョン内の後続のビルドでは、デフォルトで既存のバケットが使用されます。

defaultLogsBucketBehavior オプションを設定して複数のリージョンにビルドを作成すると、Cloud Build によってビルドログ用に複数のバケットが作成されます。

独自のプロジェクトに格納されているリージョン ビルドログには、保持ポリシーがありません。この設定は変更できません。

ログ設定間の優先順位

既存のビルド構成ファイルに defaultLogsBucketBehavior オプションを追加する場合、以前に logging または logsBucket オプションを構成している場合は、設定の競合を避けるため、これらの設定を削除することをおすすめします。

具体的には、次の設定では、defaultLogsBucketBehavior は機能しません。

  • ビルドログを Cloud Logging に保存する logging: CLOUD_LOGGING_ONLY
  • ロギングをオフにする logging: NONE

ビルド構成にロギング オプションが設定されていないビルドを実行すると、Cloud Build は logging: LEGACY を設定し、Google が作成したデフォルトの Cloud Storage バケットにログを保存します。defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET を追加した場合、このオプションによって、logging: LEGACY がオーバーライドされます。

ビルドログを表示

IAM の権限:

  • ビルドログが Logging にある場合、ビルドログを表示したいプリンシパルにビルドが構成されているプロジェクトのログ閲覧者のロールを付与します。

    1. [IAM] ページを開きます。

      [IAM] ページを開く

    2. プロジェクトを選択し、[開く] をクリックします。

    3. 権限の表でプリンシパルのメール ID を探し、鉛筆アイコンをクリックします。

    4. [Logging] > [ログ閲覧者] ロールを選択します。

    5. [保存] をクリックします。

  • ビルドログが Google 作成のデフォルトの Cloud Storage バケットに存在する場合、ビルドログを表示したいプリンシパルに、ビルドが構成されているプロジェクトのプロジェクト閲覧者ロールを付与します。

    1. [IAM] ページを開きます。

      [IAM] ページを開く

    2. プロジェクトを選択し、[開く] をクリックします。

    3. 権限の表でプリンシパルのメール ID を探し、鉛筆アイコンをクリックします。

    4. [プロジェクト] > [閲覧者] のロールを選択します。

    5. [保存] をクリックします。

    ビルドログがユーザー作成またはユーザー所有の Cloud Storage バケットに存在する場合、ビルドログを表示したいプリンシパルにストレージ オブジェクト閲覧者のロールを付与します。

    1. [IAM] ページを開きます。

      [IAM] ページを開く

    2. プロジェクトを選択し、[開く] をクリックします。

    3. 権限の表でプリンシパルのメール ID を探し、鉛筆アイコンをクリックします。

    4. [Cloud Storage] > [Storage Object Viewer] のロールを選択します。

    5. [保存] をクリックします。

Cloud Build でビルドログを表示するには:

コンソール

  1. Google Cloud Console で Cloud Build ページを開きます。

    Cloud Build ページを開く

  2. プロジェクトを選択し、[開く] をクリックします。

  3. [リージョン] プルダウン メニューで、ビルドのリージョンを選択します。

  4. [ビルド履歴] ページで、特定のビルドをクリックします。

  5. [ビルドの詳細] ページの [ステップ] で、[ビルドの概要] をクリックしてビルド全体のビルドログを表示するか、ビルドステップをクリックして対象のステップのビルドログを表示します。

    [ビルドの詳細] ページのビルドログのスクリーンショット

  6. ログが Logging に保存されている場合は、[ビルドログ] パネルで アイコンをクリックしてログ エクスプローラでログを表示します。

    ログ エクスプローラのビルドログのスクリーンショット

gcloud

gcloud builds log コマンドを実行します。ここで、build-id はビルドログを取得するビルドの ID です。ビルド ID は、gcloud builds submit の実行時にビルド送信プロセスの最後に表示されるか、gcloud builds list の実行時に ID 列に表示されます。

gcloud builds log build-id

GitHub と GitHub Enterprise でビルドログを表示するには:

GitHub または GitHub Enterprise トリガーを作成し、オプションとして --include-logs-with-status を指定した場合、GitHub と GitHub Enterprise でビルドログを表示できます。

GitHub と GitHub Enterprise でビルドログを表示するには:

  1. トリガーに関連付けられたリポジトリに移動します。

  2. commit のリストに移動します。

  3. ビルドログを表示する commit の行を見つけます。

  4. commit の行にある結果のアイコンをクリックします。

    commit に関連付けられているチェックのリストが表示されます。

  5. ビルドログを表示する行の [詳細] をクリックします。

    commit に関連付けられている [概要] ページが表示されます。--include-logs-with-status フラグを使用してトリガーを作成した場合、ページの [詳細] セクションにビルドログが表示されます。

ビルドログを削除する

Google が作成したログバケットからビルドログを削除することはできません。

ユーザー作成のログバケットからビルドログを削除する場合は、以下の手順に従います。

  1. ログを削除するユーザーまたはサービス アカウントにストレージ オブジェクト管理者のロールを付与します。

  2. オブジェクトの削除に記載の Cloud Storage オブジェクトを削除する手順に従って、ビルドログを削除します。

ユーザー作成のログバケットを削除するには、以下の手順に従います。

  1. ログバケットを削除するユーザーまたはサービス アカウントにストレージ管理者のロールを付与します。

  2. バケットの削除に記載のバケットを削除するための手順に従い、ログバケットを削除します。

次のステップ