ビルドエラーのトラブルシューティング

このページでは、ビルドの実行時に発生する可能性のある一般的なエラー メッセージに対するトラブルシューティングの方法と解決策を説明します。

ビルドはローカルで合格していますか?

Cloud Build エラーのトラブルシューティングでは、常に最初の手順として、ローカルでビルドできることを確認してください。ビルドがローカルで動作しない場合、問題の根本原因は Cloud Build によるものではありません。まず問題をローカルで診断して、修正する必要があります。

ビルドログを確認しましたか?

Logging または Cloud Storage のビルドログを使用して、ビルドエラーの詳細情報を取得します。stdout または stderr に書き込まれたログは、Cloud Console に自動的に表示されます。

ユーザーにビルドログへのアクセス権が付与されていないため、手動ビルドが失敗する

手動でビルドを実行しようとすると、次のエラーが表示されます。

AccessDeniedAccess denied. [EMAIL_ADDRESS] does not have storage.objects.get access to the Google Cloud Storage object.

このエラーが表示される理由は、Cloud Build では、手動ビルドを実行し、デフォルトの Cloud Storage ログバケットを使用しているユーザーに、Cloud Build 編集者のロールとプロジェクト閲覧者の IAM ロールが付与されている必要があるためです。このエラーを解決するには、次のいずれかを行います。

サービス アカウントの権限が付与されていないため、ビルドが失敗する

Cloud Build は、特別なサービス アカウントを使用してユーザーの代わりにビルドを実行します。Cloud Build サービス アカウントにタスクの実行に必要な権限が付与されていない場合は、次のエラーが表示されます。

Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com

このエラーに対処するには、サービス アカウントに必要な権限を付与します。次のページの情報を使用して、Cloud Build サービス アカウントに付与する権限を決定します。

サービス アカウントの権限がないことを原因とするビルドエラーは、一般的に Cloud Build を使用してデプロイしようとした際に発生します。

Cloud Functions でデプロイする際にエラーが発生する

Cloud Functions でデプロイしようとすると、次のエラーが表示されます。

Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com

このエラーに対処するには、Cloud Build サービス アカウントに Cloud Functions デベロッパーのロールを付与します

App Engine でデプロイする際にエラーが発生する

App Engine でデプロイしようとすると、次のエラーが表示されます。

Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com

このエラーに対処するには、Cloud Build サービス アカウントに App Engine 管理者のロールを付与します。

GKE でデプロイする際にエラーが発生する

GKE でデプロイしようとすると、次のエラーが表示されます。

Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com

このエラーに対処するには、Cloud Build サービス アカウントに GKE デベロッパーのロールを付与します

Cloud Run にデプロイする際にエラーが発生する

Cloud Run でデプロイしようとすると、次のエラーが表示されます。

Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com

このエラーは、Cloud Build サービス アカウントに Cloud Run へのデプロイに必要な IAM 権限が付与されていないことが原因で表示されます。必要な権限の付与については、Cloud Run でデプロイするをご覧ください。

Container Registry にイメージを保存する際にエラーが発生する

ビルドされたイメージを Container Registry に保存しようとすると、次のエラーが表示されます。

[EMAIL_ADDRESS] does not have storage.buckets.create access to project [PROJECT_NAME]

このエラーは、Cloud Build サービス アカウントに Container Registry にコンテナ イメージを保存するために必要なストレージ管理者のロールが付与されていないことが原因で表示されます。

無効な SSH 承認が原因でビルドが失敗する

ビルドの実行時に次のエラーが表示されます。

Could not parse ssh: [default]: invalid empty ssh-agent socket, make sure SSH_AUTH_SOCK is set

このエラーは、SSH 認証に問題があることを示しています。よくある例は、Cloud Build を使用して限定公開 GitHub リポジトリにアクセスすると発生する SSH 承認エラーです。GitHub の SSH の設定手順については、限定公開 GitHub リポジトリへのアクセスをご覧ください。

No route to host エラーによりビルドが失敗する

プライベート プールでビルドを実行すると、次のようなエラーが表示されます。

Unable to connect to the server: dial tcp 192.168.10.XX:<port>: connect: no route to host

Cloud Build は、Docker コンテナを使用して、Google 管理プロジェクトの仮想マシンでクラウド ビルダーを実行します。Docker ブリッジ インターフェース(その結果、このインターフェースに接続されているコンテナ)には、192.168.10.0/24 の IP 範囲が割り当てられます。これにより、同じサブネット内の外部ホストとの通信ができなくなります。プライベート プールの構成時にプロジェクトのリソースに IP 範囲を割り当てる場合は、192.168.10.0/24 以外の範囲を選択することをおすすめします。手順については、プライベート プール用の環境の設定をご覧ください。

cloudbuild.builds.create 権限がないためにビルドトリガーが失敗する

ビルドトリガーの実行時に次のエラーが表示されます。

Failed to trigger build: Permission 'cloudbuild.builds.create' denied on resource 'projects/xxxxxxxx' (or it may not exist)

ビルドトリガーは、Cloud Build サービス アカウントを使用してビルドを作成します。上記のエラーは、Cloud Build サービス アカウントに cloudbuild.builds.create IAM 権限がないことを示しています。これは、サービス アカウントがビルドトリガーを実行するために必要な権限です。このエラーを解決するには、[PROJECT_NUMBER]@cloudbuild.gserviceaccount.comCloud Build Service Account IAM ロールを付与します。このロールを付与する方法については、Cloud Build サービス アカウントのアクセス権の構成をご覧ください。

I/O タイムアウト エラー

ビルドの実行時に次のエラーが表示されます。

Timeout - last error: dial tcp IP_ADDRESS: i/o timeout

このエラーは一般的に、ビルドがプライベート ネットワーク内のリソースにアクセスしようとしたときに発生します。Cloud Build を介したビルドの実行は、公共のインターネットのプライベート リソース(リポジトリまたはレジストリ内のリソースなど)にアクセスできますが、ビルドはプライベート ネットワーク内のリソースにアクセスできません。

4xx クライアント エラー

このエラーのグループは、リクエストの送信ユーザーが失敗したことによってビルド リクエストが正常に完了しなかったことを示します。4xx クライアント エラーの例を以下に示します。

  • **Error**: 404 : Requested entity was not found
  • **Error**: 404 : Trigger not found
  • **Error**: 400 : Failed Precondition

4xx クライアント エラーが表示される場合は、ビルドログを確認し、エラーの理由に関する詳細情報が記載されているかどうかを確認します。クライアント エラーのよくある原因には、次のようなものがあります。

  • 指定したソースの場所には commit することが必要な新しい情報が存在せず、作業用ツリーがクリーンである。この場合はソースコードの場所を確認して、もう一度ビルドをお試しください。
  • リポジトリにビルド構成ファイルが含まれていない。これに該当する場合は、ビルド構成ファイルをリポジトリにアップロードし、ビルドを再度実行します。
  • 誤ったトリガー ID を指定した。
  • GitHub アプリのインストール後に新しいリポジトリを最近追加しており、Cloud Build に新しいリポジトリにアクセスする権限が付与されていない。これに該当する場合は、新しいリポジトリを Cloud Build に接続します。

次のステップ