Risoluzione degli errori delle build

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:

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:

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:

  1. 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
    
  2. 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:

  1. Apri Esplora log nella console Google Cloud:

    Vai a Esplora log

  2. 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"
    
  3. 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, controlla protoPayload.authenticationInfo.principalEmail nel log per determinare l'identità IAM responsabile della rimozione dell'autorizzazione o del ruolo roles/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