Questa pagina fornisce strategie di risoluzione dei problemi e soluzioni per alcuni che potrebbero essere visualizzati durante l'esecuzione di una build.
Hai esaminato i log di build?
Utilizza Log di build di Logging o Cloud Storage
per ottenere maggiori informazioni
sull'errore di generazione. Log scritti in stdout
o stderr
vengono visualizzati automaticamente nella console Google Cloud.
Le build manuali non riescono perché l'utente non ha accesso ai log di build
Quando tenti di eseguire un progetto, viene visualizzato il seguente errore crea manualmente:
AccessDeniedAccess denied. [EMAIL_ADDRESS] does not have storage.objects.get access to the Google Cloud Storage object.
Questo errore viene visualizzato perché Cloud Build richiede che gli utenti che eseguono le build manuali e l'utilizzo bucket dei log di Cloud Storage predefinito dispongono del ruolo IAM Visualizzatore progetto oltre che per Cloud Build Ruolo Editor. Per risolvere questo errore, puoi procedere in uno dei seguenti modi:
Utilizza il bucket di log predefinito e concedi il visualizzatore progetto e l'editor di Cloud Build all'utente che esegue la build. Per istruzioni su come concedere questa autorizzazione, consulta Configurare l'accesso alle risorse di Cloud Build.
Crea il tuo bucket Cloud Storage per archiviare i log. Per le istruzioni, consulta Archiviazione dei log di compilazione in un bucket creato dall'utente.
Le build non riescono a causa di autorizzazioni dell'account di servizio mancanti
Se l'account di servizio che stai utilizzando per la tua build non ha i necessari l'autorizzazione a eseguire un'attività, verrà visualizzato un messaggio di errore simile al seguente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE ACCOUNT]
Per risolvere questo errore, concedi all'account di servizio l'autorizzazione richiesta. Utilizza le funzionalità di le informazioni nelle pagine seguenti per stabilire l'autorizzazione a concedi al tuo account di servizio di build:
- Configura gli account di servizio specificati dall'utente
- Service account predefinito di Cloud Build
- Informazioni sui ruoli IAM
- Concessione delle autorizzazioni all'account di servizio predefinito Cloud Build
Si verificano spesso errori di build dovuti a autorizzazioni mancanti per gli account di servizio di build durante il tentativo di eseguire il deployment con Cloud Build.
Errore di autorizzazione negata durante il deployment delle funzioni di Cloud Run
Quando provi a utilizzare le funzioni di Cloud Run, viene visualizzato il seguente errore:
ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.get' denied]
Per risolvere questo errore, concedi il ruolo Sviluppatore funzioni Cloud Run all'account di servizio di build.
Errore di autorizzazione mancante durante il deployment nelle funzioni Cloud Run
Quando provi a eseguire il deployment delle funzioni in Cloud Run, viene visualizzato un errore simile al seguente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE ACCOUNT]
Per risolvere questo errore, concedi il ruolo Utente account di servizio al tuo account di servizio specificato dall'utente o account di servizio predefinito.
Errore durante il deployment su App Engine
Quando provi a eseguire il deployment su App Engine, viene visualizzato un errore simile al seguente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE_ACCOUNT]
Per risolvere questo errore, concedi il ruolo Amministratore App Engine al tuo account di servizio specificato dall'utente o all'account di servizio predefinito.
Errore durante il deployment su GKE
Quando provi a eseguire il deployment su GKE, viene visualizzato un errore simile al seguente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE_ACCOUNT]
Per risolvere questo errore, concedi il ruolo Sviluppatore GKE al tuo account di servizio di compilazione.
Errore durante il deployment su Cloud Run
Quando provi a eseguire il deployment su Cloud Run, viene visualizzato un errore simile al seguente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE_ACCOUNT]
Questo errore si verifica perché l'account di servizio di compilazione non dispone delle autorizzazioni IAM necessarie per il deployment su Cloud Run. Per informazioni sulla concessione delle autorizzazioni necessarie, consulta Deployment su Cloud Run.
L'attivatore di compilazione non riesce a causa dell'autorizzazione cloudbuild.builds.create
mancante
Quando esegui un attivatore di compilazione, viene visualizzato un errore simile al seguente:
Failed to trigger build: Permission 'cloudbuild.builds.create' denied on resource 'projects/xxxxxxxx' (or it may not exist)
I trigger di build utilizzano un account di servizio per creare una build. Questo errore indica che all'account di servizio manca l'autorizzazione IAM cloudbuild.builds.create
, necessaria per l'esecuzione di un trigger di compilazione. Puoi risolvere questo errore concedendo il ruolo IAM Cloud Build Service Account
all'account di servizio specificato dall'utente
o all'account di servizio predefinito.
Errore di invio della build a causa di autorizzazioni dell'agente di servizio mancanti
Se l'agente di servizio Cloud Build viene eliminato o non dispone delle autorizzazioni, potrebbe verificarsi il seguente errore durante l'invio di una compilazione.
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.
Il chiamante in questo scenario è l'agente di servizio Cloud Build. A risolvere questo problema di autorizzazione, svolgi i seguenti passaggi:
Assicurati che esista l'agente di servizio Cloud Build. Puoi visualizzare dell'agente di servizio per un progetto Pagina IAM nella console Google Cloud e selezionando la casella di controllo Mostra account di servizio gestiti Google. Se non è presente, puoi crearlo eseguendo il seguente comando gcloud CLI:
gcloud beta services identity create --service=cloudbuild.googleapis.com \ --project=PROJECT_ID
Successivamente, concedi il ruolo IAM
roles/cloudbuild.serviceAgent
all'account Agente di servizio 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"
Per verificare quale identità IAM è stata potenzialmente responsabile del problema di autorizzazione dell'agente di servizio, segui questi passaggi:
Apri Esplora log nella console Google Cloud:
Inserisci il seguente testo nel campo della query:
resource.type="project" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" "service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
Se dopo aver utilizzato questa query noti voci di log, verifica se stanno rimuovendo le autorizzazioni dall'agente di servizio (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
). In questo caso, controllaprotoPayload.authenticationInfo.principalEmail
nel log per determinare l'identità IAM responsabile della rimozione dell'autorizzazione o del ruoloroles/cloudbuild.serviceAgent
contenente l'autorizzazione elencata nel .
L'attivatore non riesce con l'errore Couldn't read commit
Quando esegui un trigger di compilazione, viene visualizzato il seguente errore:
Failed to trigger build: Couldn't read commit
Cloud Build restituisce questo messaggio se stai tentando di attivare una compilazione utilizzando un ramo che non esiste. Controlla l'ortografia e la coerenza dei nomi delle directory. Per istruzioni sulla configurazione dei trigger, vedi Creare e gestire i trigger di build.
Impossibile creare trigger Pub/Sub
Quando crei un trigger Pub/Sub, viene visualizzato il seguente errore:
Failed to create trigger: Request is prohibited by organization's policy
Questo errore indica che l'API Pub/Sub è limitata in progetto. I progetti che limitano l'API Pub/Sub limitano la possibilità di creare sottoscrizioni push. Per risolvere l'errore, puoi rimuovere temporaneamente Pub/Sub dai servizi con limitazioni nel tuo perimetro, creare l'attivatore e limitare di nuovo l'API Pub/Sub.
Errore durante l'archiviazione delle immagini in Container Registry
Quando la compilazione tenta di archiviare le immagini create in Container Registry, viene visualizzato un errore simile al seguente:
[EMAIL_ADDRESS] does not have storage.buckets.create access to project [PROJECT_NAME]
Questo errore si verifica perché il tuo account di servizio di compilazione non ha il ruolo Amministratore Storage necessario per archiviare le immagini container in Container Registry.
Le build non riescono a causa di un'autorizzazione SSH non valida
Quando esegui una compilazione, viene visualizzato il seguente errore:
Could not parse ssh: [default]: invalid empty ssh-agent socket, make sure SSH_AUTH_SOCK is set
Questo errore indica un problema con l'autorizzazione SSH. Un esempio comune è l'errore di autorizzazione SSH che si verifica quando si accede ai repository privati GitHub con Cloud Build. Per istruzioni sulla configurazione di SSH per GitHub, consulta Accesso ai repository GitHub privati.
Le build non riescono a causa di un errore No route to host
Quando esegui una build in un pool privato, viene visualizzato il seguente errore o uno simile:
Unable to connect to the server: dial tcp 192.168.10.XX:<port>: connect: no route to host
Cloud Build esegue i propri strumenti Cloud Build sulla macchina virtuale nel progetto gestito da Google utilizzando i container Docker. All'interfaccia bridge di Docker (e di conseguenza ai
contenuti dei container collegati a questa interfaccia) viene assegnato un intervallo IP di
192.168.10.0/24
, il che rende impossibile la comunicazione con gli agenti
esterni nella stessa subnet. Quando assegni gli intervalli IP per le risorse dei tuoi progetti durante la configurazione del pool privato, ti consigliamo di selezionare un intervallo diverso da 192.168.10.0/24. Per le istruzioni, vedi Configurazione dell'ambiente per i pool privati.
La connessione alla risorsa esterna non riesce perché non è abilitato alcun IP esterno
Quando ti connetti a una risorsa esterna da un pool privato, viene visualizzato il seguente errore:
Failed to connect to <external_domain>: Connection timed out
I pool privati utilizzano indirizzi IP esterni per accedere alle risorse sull'internet pubblico, come i repository esterni. Durante la creazione o l'aggiornamento un pool privato, seleziona la casella per assegnare IP esterni al pool piscina. Per istruzioni su come creare o aggiornare i campi in il tuo pool privato, consulta Creazione e gestione di pool privati.
Errore di timeout I/O
Quando esegui una compilazione, viene visualizzato il seguente errore:
Timeout - last error: dial tcp IP_ADDRESS: i/o timeout
Questo errore può verificarsi quando la compilazione tenta di accedere alle risorse di una rete privata, ma non riesce. Per impostazione predefinita, le build eseguite tramite Cloud Build possono accedere alle risorse private della rete internet pubblica, ad esempio le risorse di un repository o di un registry. Tuttavia, le build possono accedere alle risorse in una rete privata solo se utilizzi pool privati e li configuri per accedere alla rete privata. Consulta: Utilizzo di Cloud Build in una rete privata.
Errori del client 4xx
Questo gruppo di errori indica che, presumibilmente, la richiesta di build non è riuscita per colpa dell'utente che invia la richiesta. Ecco alcuni esempi di errori client 4xx:
**Error**: 404 : Requested entity was not found
**Error**: 404 : Trigger not found
**Error**: 400 : Failed Precondition
**Error**: 403 : Permission denied
Quando viene visualizzato un errore client 4xx, controlla i log di compilazione per verificare se contengono maggiori informazioni sul motivo dell'errore. Alcune cause comuni per il cliente errori includono:
- La località di origine specificata non ha nuovi elementi di cui eseguire il commit e che l'albero funzionante sia pulito. In questo caso, controlla la posizione del codice sorgente e prova a creare di nuovo.
- Il repository non contiene un file di configurazione della build. In questo caso, carica un file di configurazione di compilazione nel repository ed esegui a creare di nuovo.
- Hai specificato un ID attivatore errato.
- Di recente hai aggiunto un nuovo repository dopo aver installato l'app GitHub e Cloud Build non dispone delle autorizzazioni per accedere al nuovo repository. In questo caso, connetti il nuovo repository a Cloud Build.
- Devi concedere un'altra autorizzazione al tuo account di servizio di compilazione.
La compilazione non riesce a causa di limitazioni della quota
Viene visualizzato il seguente errore, che indica che una build non riesce a causa del alle limitazioni delle quote in una particolare regione:
Failed to trigger build: generic::failed_precondition: due to quota restrictions, cannot run builds in this region. Please contact support.
Contatta l'Assistenza clienti Google Cloud per aumentare le quote per questa regione specifica. Per saperne di più su quote e limiti, consulta Quote e limiti.
Problemi di timeout durante il pull delle immagini dal registro Docker
Nel log di Cloud Build dopo un'esecuzione vengono visualizzati i seguenti errori di timeout:
Step #0: Pulling image: python:3.8.16-alpine3.17
Step #0: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Step 1/7 : FROM python:3.8.16-alpine3.17
Get "https://registry-1.docker.io/v2/": dial tcp 34.205.13.154:443: i/o timeout
Per risolvere l'errore, scarica l'immagine Docker utilizzando crane e caricala nell'immagine Docker di Cloud Build.
Aggiungi il seguente snippet al file cloudbuild.yaml.
...
# Crane runs as a regular user so we need to allow it to access the directory where it saves the image.
- name: gcr.io/cloud-builders/docker
args:
- a+w
- /workspace
entrypoint: chmod
# Use crane to download the image through the proxy
- name: gcr.io/go-containerregistry/crane
env: - 'HTTPS_PROXY=HTTPS_PROXY'
args:
- pull
- 'python:3.8.16-alpine3.17'
- /workspace/image.tar
# Use docker load to add the image into the local Cloud Build registry
- name: gcr.io/cloud-builders/docker
args: [load, --input, "/workspace/image.tar"]
- .
HTTPS_PROXY
: l'indirizzo del proxy HTTP (ad es.https://proxy.example.com:8888/
).
Una volta caricata l'immagine, i passaggi cloudbuid.yaml esistenti dovrebbero funzionare normalmente, ad esempio
...
- name: python:3.8.16-alpine3.17
args:
- echo
- hello
entrypoint: bash
# Or use it internally on a Dockerfile
- name: gcr.io/cloud-builders/docker
args:
- build
Errori Unauthenticated
per i passaggi Docker di lunga durata
I passaggi di compilazione che richiedono un comando Docker in esecuzione per più di un'ora (ad esempio il push di un'immagine di grandi dimensioni in Artifact Registry) potrebbero non riuscire a causa di un errore di autenticazione. Cloud Build aggiorna i token di autenticazione ogni ora, ma Docker può non vengano individuati questi nuovi token causando problemi di autenticazione. Puoi scrivere il tuo token con una durata personalizzata da salvare e utilizzarlo come riferimento per i comandi Docker.
Build in coda in un pool privato in peering con una rete VPC
Quando esegui build in un pool privato con la rete del producer di servizi è connesso in peering alla tua rete VPC. È importante che la connessione privata tra queste due reti rimane intatta. Se elimini la connessione privata su cui si basa un pool privato, puoi interrompere il pool privato. Ciò può verificarsi come build che rimangono in coda fino al timeout. Pertanto, Per eliminare una connessione privata, ricordati di eliminare anche pool privati la cui rete del producer di servizi è stata connessa al tuo VPC che utilizza questa connessione privata.
Tentativo di approvare o rifiutare build in sospeso risalenti a più di 2 mesi fa
Non puoi approvare o rifiutare build in attesa risalenti a più di 2 mesi prima della data corrente. Se provi a farlo, potresti visualizzare un messaggio di errore simile al seguente:
404, "message": "Requested entity was not
found.", "status": "NOT_FOUND" } }
In questo caso, prova a inviare una nuova build.
Passaggi successivi
- Scopri come gestire i log di build.