本頁面提供一些常見錯誤訊息的疑難排解策略以及解決方案,這些錯誤訊息可能會在您執行建構作業時顯示。
您是否查看過建構記錄?
使用記錄或 Cloud Storage 建構記錄,進一步瞭解建構錯誤。寫入 stdout 或 stderr 的記錄可使用 Google Cloud 控制台和 gcloud CLI 檢視。
使用者無法存取建構記錄,因此手動建構失敗
嘗試手動執行建構作業時,會看到下列錯誤訊息:
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 資源的存取權。
建立自己的 Cloud Storage bucket 來儲存記錄。如需操作說明,請參閱「將建構記錄儲存在使用者建立的值區中」。
缺少 iam.serviceAccounts.actAs 權限,導致建構失敗
使用 Cloud Run 或 App Engine 等代管服務部署建構版本時,會看到下列錯誤:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE ACCOUNT]
如要解決這項錯誤,請設定指定的 Cloud Build 服務帳戶或預設 Cloud Build 服務帳戶,模擬您用於建構作業的受管理服務服務帳戶。如要進一步瞭解這項工作,請參閱「為代管服務設定 Cloud Build 服務帳戶模擬功能」。
如要進一步瞭解服務帳戶和權限,請參閱下列主題:
在 Cloud Run functions 上部署時發生權限遭拒錯誤
嘗試使用 Cloud Run functions 時,您會看到下列錯誤訊息:
ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.get' denied]
如要修正這項錯誤,請將 Cloud Run Functions 開發人員角色授予建構服務帳戶。
缺少 cloudbuild.builds.create 權限,因此自動建構觸發條件失敗
執行自動建構觸發條件時,您會看到類似下列的錯誤訊息:
Failed to trigger build: Permission 'cloudbuild.builds.create' denied on resource 'projects/xxxxxxxx' (or it may not exist)
自動建構觸發條件會使用服務帳戶建立建構作業。這項錯誤表示服務帳戶缺少 cloudbuild.builds.create IAM 權限,因此無法執行自動建構觸發條件。如要解決這項錯誤,請將 Cloud Build Service Account IAM 角色授予使用者指定的服務帳戶或預設服務帳戶。
缺少服務代理權限,因此建構提交作業失敗
如果 Cloud Build 服務代理遭到刪除或缺少權限,提交建構作業時可能會發生下列錯誤。
Caller does not have required permission to use project $PROJECT_ID. Grant the caller the roles/serviceusage.serviceUsageConsumer role, or a custom role with the serviceusage.services.use permission, by visiting https://console.developers.google.com/iam-admin/iam/project?project=$PROJECT_ID and then retry. Propagation of the new permission may take a few minutes.
在此情境中,呼叫者是 Cloud Build 服務代理。如要解決權限問題,請按照下列步驟操作:
確認 Cloud Build 服務代理程式是否存在。如要查看專案的服務代理程式,請前往 Google Cloud 控制台的「IAM」頁面,然後選取「顯示 Google 代管的服務帳戶」核取方塊。如果沒有,請執行下列 gcloud CLI 指令建立:
gcloud beta services identity create --service=cloudbuild.googleapis.com \ --project=PROJECT_ID接著,將
roles/cloudbuild.serviceAgentIAM 角色授予 Cloud Build 服務代理:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \ --role="roles/cloudbuild.serviceAgent"
如要驗證可能是哪個 IAM 身分導致服務代理程式權限問題,請按照下列步驟操作:
在 Google Cloud 控制台中開啟 Logs Explorer:
在查詢欄位中輸入下列文字:
resource.type="project" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" "service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"如果使用這項查詢後看到任何記錄項目,請檢查是否有任何項目從服務代理 (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com) 移除權限。如有,請查看該記錄中的protoPayload.authenticationInfo.principalEmail,找出負責移除權限或包含錯誤訊息所列權限的roles/cloudbuild.serviceAgent角色的 IAM 身分。
觸發條件失敗,發生 Couldn't read commit 錯誤
執行自動建構觸發條件時,您會看到下列錯誤:
Failed to trigger build: Couldn't read commit
如果您嘗試使用不存在的分支觸發建構作業,Cloud Build 會傳回這則訊息。檢查目錄名稱的拼字和一致性。如需觸發條件設定的操作說明,請參閱「建立及管理自動建構觸發條件」。
無法建立 Pub/Sub 觸發條件
建立 Pub/Sub 觸發條件時,您會看到下列錯誤:
Failed to create trigger: Request is prohibited by organization's policy
這項錯誤表示專案中的 Pub/Sub API 受到限制。專案限制 Pub/Sub API 會限制建立推送訂閱項目的能力。 您可以暫時從周邊的受限制服務中移除 Pub/Sub,建立觸發條件,然後再次限制 Pub/Sub API,即可解決錯誤。
由於發生錯誤,因此無法從私人存放區提取或擷取分支:fatal: could not read Username
嘗試對私人存放區的遠端分支執行