Risoluzione degli errori delle build

Questa pagina fornisce strategie di risoluzione dei problemi e soluzioni per alcuni messaggi di errore comuni che potresti visualizzare durante l'esecuzione di una build.

Hai guardato i log di build?

Per ulteriori informazioni sull'errore di build, utilizza i log di build di Logging o Cloud Storage. I 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 provi a eseguire una build manualmente, viene visualizzato il seguente errore:

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 build manuali e utilizzano il bucket di log predefinito di Cloud Storage abbiano il ruolo IAM Visualizzatore progetto oltre al ruolo Editor Cloud Build. Per risolvere questo errore, puoi procedere in uno dei seguenti modi:

Le build non riescono a causa di autorizzazioni mancanti dell'account di servizio

Cloud Build utilizza un account di servizio speciale per eseguire le build per tuo conto. Se l'account di servizio Cloud Build non dispone dell'autorizzazione necessaria per eseguire un'attività, verrà visualizzato il seguente errore:

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

Per risolvere questo errore, concedi l'autorizzazione richiesta all'account di servizio. Utilizza le informazioni nelle pagine seguenti per determinare l'autorizzazione da concedere all'account di servizio Cloud Build:

Gli errori di build dovuti a autorizzazioni mancanti per l'account di servizio si verificano solitamente quando si cerca di eseguire il deployment tramite Cloud Build.

Errore di autorizzazione negata durante il deployment su Cloud Functions

Quando provi a utilizzare Cloud Functions viene visualizzato il seguente errore:

ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.get' denied

Per risolvere questo errore, concedi il ruolo Sviluppatore Cloud Functions all'account di servizio Cloud Build.

Errore di autorizzazione mancante durante il deployment su Cloud Functions

Quando provi a eseguire il deployment su Cloud Functions, viene visualizzato il seguente errore:

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

Per risolvere questo errore, concedi il ruolo Utente account di servizio all'account di servizio Cloud Build.

Errore durante il deployment su App Engine

Quando provi a eseguire il deployment su App Engine, viene visualizzato il seguente errore:

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

Per risolvere questo errore, concedi il ruolo Amministratore App Engine all'account di servizio Cloud Build.

Errore durante il deployment su GKE

Quando provi a eseguire il deployment su GKE, viene visualizzato il seguente errore:

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

Per risolvere questo errore, concedi il ruolo Sviluppatore GKE all'account di servizio Cloud Build.

Errore durante il deployment in Cloud Run

Quando provi a eseguire il deployment su Cloud Run, viene visualizzato il seguente errore:

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

Questo errore viene visualizzato perché l'account di servizio Cloud Build non dispone delle autorizzazioni IAM necessarie per il deployment in Cloud Run. Per informazioni sulla concessione delle autorizzazioni necessarie, consulta Deployment su Cloud Run.

Il trigger di build non va a buon fine a causa dell'autorizzazione cloudbuild.builds.create mancante

Quando esegui un trigger di build viene visualizzato il seguente errore:

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

I trigger di build utilizzano l'account di servizio Cloud Build per creare una build. L'errore riportato sopra indica che nell'account di servizio Cloud Build manca l'autorizzazione IAM cloudbuild.builds.create, necessaria all'account di servizio per eseguire un trigger di build. Per risolvere questo errore, concedi il ruolo IAM Cloud Build Service Account a [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com. Per istruzioni sulla concessione di questo ruolo, vedi Configurazione dell'accesso per l'account di servizio Cloud Build.

L'attivazione non va a buon fine con Couldn't read commit errore

Quando esegui un trigger di build viene visualizzato il seguente errore:

  Failed to trigger build: Couldn't read commit

Cloud Build restituisce questo messaggio se stai tentando di attivare una build utilizzando un ramo inesistente. Controlla l'ortografia e la coerenza dei nomi delle directory. Per istruzioni sulla configurazione dei trigger, consulta Creare e gestire i trigger di build.

Impossibile creare il 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 nel progetto. I progetti che limitano l'API Pub/Sub limitano la possibilità di creare sottoscrizioni push. Puoi rimuovere temporaneamente Pub/Sub dai servizi limitati nel tuo perimetro, creare il trigger e limitare nuovamente l'API Pub/Sub per risolvere l'errore.

Errore durante l'archiviazione delle immagini in Container Registry

Quando la build tenta di archiviare le immagini create in Container Registry, viene visualizzato il seguente errore:

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

Visualizzi questo errore perché l'account di servizio Cloud Build non dispone del ruolo Amministratore Storage necessario per archiviare le immagini container in Container Registry.

Le build hanno esito negativo a causa di un'autorizzazione SSH non valida

Quando esegui una build 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 è un 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 privati GitHub.

Le build non sono riuscite a causa di No route to host errore

Quando esegui una build in un pool privato, ricevi il seguente errore o un errore simile:

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

Cloud Build esegue i suoi Cloud Builder sulla macchina virtuale nel progetto gestito da Google utilizzando i container Docker. All'interfaccia del bridge Docker (e di conseguenza ai container collegati a questa interfaccia) viene assegnato un intervallo IP pari a 192.168.10.0/24, il che rende impossibile la comunicazione con gli host esterni nella stessa subnet. Quando assegni gli intervalli IP per le risorse nei tuoi progetti durante la configurazione del pool privato, ti consigliamo di selezionare un intervallo esterno a 192.168.10.0/24. Per le istruzioni, vedi Configurazione dell'ambiente per i pool privati.

La connessione alla risorsa esterna non riesce a causa dell'assenza di un IP esterno abilitato

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 IP esterni per accedere a risorse sulla rete internet pubblica, ad esempio repository esterni. Quando crei o aggiorni un pool privato, seleziona la casella per assegnare IP esterni al pool privato. Per istruzioni su come creare o aggiornare i campi all'interno del pool privato, consulta Creazione e gestione dei pool privati.

Errore di timeout I/O

Quando esegui una build viene visualizzato il seguente errore:

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

Questo errore può verificarsi quando la build tenta di accedere alle risorse in una rete privata senza successo. Per impostazione predefinita, le build eseguite tramite Cloud Build possono accedere a risorse private nella rete internet pubblica, come le risorse in un repository o in un registro. 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 la richiesta di build non ha esito positivo presumibilmente per errore dell'invio della richiesta da parte dell'utente. Ecco alcuni esempi di errori del client 4xx:

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

Se visualizzi un errore del client 4xx, controlla se i log di build contengono ulteriori informazioni sul motivo dell'errore. Alcune cause comuni degli errori del client sono:

  • La posizione di origine specificata non ha nulla di nuovo di cui eseguire il commit e l'albero di lavoro è 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 della build nel tuo repository ed esegui di nuovo la build.
  • 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 all'account di servizio.

La build non riesce a causa di limitazioni di quota

Viene visualizzato il seguente errore che indica che una build non è riuscita a causa di limitazioni di quota in una determinata 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 tue quote per questa particolare regione. Per saperne di più su quote e limiti, consulta Quote e limiti.

Problemi di timeout durante il pull delle immagini dal registro Docker

Dopo un'esecuzione, nel log di Cloud Build 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 procedi al caricamento 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 tuo 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

Unauthenticated errore per i passi Docker a lunga esecuzione

I passaggi di creazione che coinvolgono un comando Docker eseguito per oltre un'ora (come il push di un'immagine di grandi dimensioni ad Artifact Registry) potrebbero non riuscire e generare un errore di autenticazione. Cloud Build aggiorna i token di autenticazione ogni ora, ma Docker potrebbe non riuscire a prelevarli, causando problemi di autenticazione. Puoi scrivere il tuo token con una durata personalizzata da archiviare e farvi riferimento per i comandi Docker.

Passaggi successivi