En esta página, se proporcionan estrategias de solución de problemas y soluciones para algunos mensajes de error comunes que puedes ver cuando ejecutas una compilación.
¿Consultaste los registros de compilación?
Usa los registros de compilación de Logging o Cloud Storage
para obtener más información sobre el error de compilación. Los registros escritos en stdout o
stderr se
pueden ver con la Google Cloud consola de y la CLI de gcloud.
Las compilaciones manuales fallan porque el usuario no tiene acceso a los registros de compilación
Verás el siguiente error cuando intentes ejecutar una compilación de forma manual:
AccessDeniedAccess denied. [EMAIL_ADDRESS] does not have storage.objects.get access to the Google Cloud Storage object.
Verás este error porque Cloud Build requiere que los usuarios que ejecutan compilaciones manuales y usan el bucket de registros predeterminado de Cloud Storage tengan el rol de IAM de visualizador del proyecto, además del rol de editor de Cloud Build. Para solucionar este error, puedes hacer lo siguiente:
Usa el bucket de registros predeterminado y otorga el rol de visualizador del proyecto y el rol de editor de Cloud Build al usuario que ejecuta la compilación. Si deseas obtener instrucciones para otorgar este permiso, consulta Configura el acceso a los recursos de Cloud Build.
Crea tu propio bucket de Cloud Storage para almacenar registros. Para obtener instrucciones, consulta Almacena registros de compilación en un bucket creado por el usuario.
Las compilaciones fallan debido a que falta el permiso iam.serviceAccounts.actAs
Verás el siguiente error cuando intentes implementar una compilación con un servicio administrado, como Cloud Run o App Engine:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE ACCOUNT]
Para solucionar este error, configura tu cuenta de servicio de Cloud Build especificada o la cuenta de servicio predeterminada de Cloud Build para suplantar la cuenta de servicio del servicio administrado que usas para tu compilación. Para obtener más información sobre esta tarea, consulta Configura la identidad temporal como cuenta de servicio de Cloud Build para los servicios administrados.
Para obtener información adicional sobre las cuentas de servicio y los permisos, consulta los siguientes temas:
- Configura cuentas de servicio especificadas por el usuario
- Cuenta de servicio predeterminada de Cloud Build
- Información sobre los roles de IAM
- Otorga permisos a la cuenta de servicio predeterminada de Cloud Build
Error de permiso denegado cuando se realiza la implementación en Cloud Run Functions
Verás el siguiente error cuando intentes usar Cloud Run Functions:
ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.get' denied]
Para solucionar este error, otorga el rol de desarrollador de Cloud Run Functions a tu cuenta de servicio de compilación.
El activador de compilación falla debido a que falta el permiso cloudbuild.builds.create
Verás un error similar al siguiente cuando ejecutes un activador de compilación:
Failed to trigger build: Permission 'cloudbuild.builds.create' denied on resource 'projects/xxxxxxxx' (or it may not exist)
Los activadores de compilación usan una cuenta de servicio para crear una compilación. Este error indica que a la cuenta de servicio le falta el permiso de IAM cloudbuild.builds.create, que es necesario para que la cuenta de servicio ejecute un activador de compilación. Para resolver este error, otorga el rol de Cloud Build Service Account
IAM a tu cuenta de servicio especificada por el usuario
o a la cuenta de servicio predeterminada.
Falla el envío de la compilación debido a que faltan permisos del agente de servicio
Si se borra el agente de servicio de Cloud Build o no tiene permisos, es posible que se produzca el siguiente error cuando se envíe una compilación.
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.
El emisor en esta situación es el agente de servicio de Cloud Build. Para resolver este problema de permisos, sigue estos pasos:
Asegúrate de que exista el agente de servicio de Cloud Build. Para ver el agente de servicio de un proyecto, ve a la página IAM en la Google Cloud consola y selecciona la casilla de verificación Mostrar cuentas de servicio administradas por Google. Si no está allí, puedes crearlo ejecutando el siguiente comando de gcloud CLI:
gcloud beta services identity create --service=cloudbuild.googleapis.com \ --project=PROJECT_IDLuego, otorga el rol de IAM
roles/cloudbuild.serviceAgental agente de servicio de 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"
Si deseas verificar qué identidad de IAM fue potencialmente responsable de generar el problema de permisos del agente de servicio, sigue estos pasos:
Abre el Explorador de registros en la Google Cloud consola de:
Ingresa el siguiente texto en el campo de consulta:
resource.type="project" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" "service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"Si ves entradas de registro después de usar esta consulta, verifica si alguna de ellas quita permisos del agente de servicio (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com). Si es así, consultaprotoPayload.authenticationInfo.principalEmailen ese registro para determinar la identidad de IAM responsable de quitar el permiso o el rolroles/cloudbuild.serviceAgentque contiene el permiso que aparece en el mensaje de error.
El activador falla con el error Couldn't read commit
Verás el siguiente error cuando ejecutes un activador de compilación:
Failed to trigger build: Couldn't read commit
Cloud Build muestra este mensaje si intentas activar una compilación con una rama que no existe. Revisa los nombres de tus directorios para verificar la ortografía y la coherencia. Para obtener instrucciones sobre la configuración del activador, consulta Crea y administra activadores de compilación.
No se puede crear el activador de Pub/Sub
Verás el siguiente error cuando crees un activador de Pub/Sub:
Failed to create trigger: Request is prohibited by organization's policy
Este error indica que la API de Pub/Sub está restringida en tu proyecto. Los proyectos que restringen la API de Pub/Sub limitan la capacidad de crear suscripciones push. Puedes quitar temporalmente Pub/Sub de los servicios restringidos en tu perímetro, crear el activador y volver a restringir la API de Pub/Sub para resolver el error.
No se pueden extraer ni recuperar ramas de un repositorio privado debido al error: fatal: could not read Username
Verás el siguiente error cuando intentes realizar un git pull o git fetch en una rama remota desde un repositorio privado:
fatal: could not read Username for '<REMOTE_URL>': No such device or address
Se espera este error en los repositorios privados, ya que el asistente de credenciales de Git se quita de forma intencional después de la clonación inicial del repositorio. Para recuperar ramas remotas de un repositorio privado, configura de forma manual las credenciales de autorización (tokens de API, claves SSH) como un paso de compilación. Obtén más información sobre cómo acceder a repositorios privados de GitHub.
Las compilaciones fallan debido a una autorización SSH no válida
Verás el siguiente error cuando ejecutes una compilación:
Could not parse ssh: [default]: invalid empty ssh-agent socket, make sure SSH_AUTH_SOCK is set
Este error indica un problema con la autorización SSH. Un ejemplo común es el error de autorización SSH que ocurre cuando se accede a repositorios privados de GitHub con Cloud Build. Para obtener instrucciones sobre cómo configurar SSH para GitHub, consulta Accede a repositorios privados de GitHub.
Las compilaciones fallan debido al error No route to host
Verás el siguiente error o uno similar cuando ejecutes una compilación en un grupo privado:
Unable to connect to the server: dial tcp 192.168.10.XX:<port>: connect: no route to host
Cloud Build ejecuta sus compiladores de Cloud en la máquina virtual del proyecto administrado por Google
con los contenedores de Docker. A la interfaz de puente de Docker (y, por lo tanto, a los contenedores conectados a esta interfaz) se le asigna un rango de IP de 192.168.10.0/24, lo que imposibilita la comunicación con los hosts externos en la misma subred. Cuando asignes los rangos de IP para los recursos de tus proyectos durante la configuración del grupo privado, te recomendamos que selecciones un rango fuera de 192.168.10.0/24. Para obtener instrucciones, consulta Configura tu entorno para grupos privados.
Las compilaciones fallan con el mensaje de error "Expired" y no muestran ningún registro
Activas o envías una compilación y falla, arroja un error "Expired" y no se generan registros.
Verifica lo siguiente en tu configuración:
Configuraste un valor
queueTtlmás bajo (p.ej., 20 s).Aumenta el valor en tu esquema y vuelve a ejecutar la compilación. Consulta
queueTtlpara obtener más información.Alcanzaste la cuota para las compilaciones simultáneas.
Puedes solicitar un aumento a través de la página Cuota en la Google Cloud consola de. Para obtener más detalles, consulta Cuotas y límites.
Usas un grupo privado y elegiste la máquina no predeterminada.
La compilación puede tardar más en iniciarse porque es posible que deba esperar a que se inicie una máquina virtual nueva. Consulta Tipos de máquinas para obtener más información.
Puedes intentar cambiar el tipo de máquina.
Usas un grupo privado y especificaste un rango de IP para el grupo.
El rango físico de IPs determina la cantidad de VMs de trabajador en el grupo y, por lo tanto, determina el límite de compilaciones simultáneas, incluso si es inferior a la cuota de compilaciones simultáneas. Las compilaciones se ponen en cola si no hay VMs de trabajador disponibles en el grupo.
Esto ocurre cuando las direcciones IP disponibles dentro de la subred designada se utilizan por completo, lo que no deja direcciones para que se asignen nuevos trabajadores de Cloud Build. Intenta aumentar el rango en la subred y vuelve a ejecutar la compilación.
Falla la conexión al recurso externo porque no está habilitada la IP externa
Verás el siguiente error cuando te conectes a un recurso externo desde un grupo privado:
Failed to connect to <external_domain>: Connection timed out
Los grupos privados usan IPs externas para acceder a recursos en la Internet pública, como repositorios externos. Cuando crees o actualices un grupo privado, selecciona la casilla para asignar IPs externas a tu grupo privado. Para obtener instrucciones sobre cómo crear o actualizar campos dentro de tu grupo privado, consulta Crea y administra grupos privados.
Error de tiempo de espera de E/S
Verás el siguiente error cuando ejecutes una compilación:
Timeout - last error: dial tcp IP_ADDRESS: i/o timeout
Este error puede ocurrir cuando tu compilación intenta acceder a recursos en una red privada, pero falla. De forma predeterminada, las compilaciones que se ejecutan con Cloud Build pueden acceder a recursos privados en la Internet pública, como los recursos en un repositorio o un registro. Sin embargo, las compilaciones solo pueden acceder a recursos en una red privada si usas grupos privados y los configuras para acceder a la red privada. Consulta Usar Cloud Build en una red privada.
4xx errores de cliente
Este grupo de errores indica que la solicitud de compilación no se realizó correctamente, probablemente por culpa del usuario que la envió. Algunos ejemplos de errores de cliente 4xx son los siguientes:
**Error**: 404 : Requested entity was not found**Error**: 404 : Trigger not found**Error**: 400 : Failed Precondition**Error**: 403 : Permission denied
Cuando veas un error de cliente 4xx, consulta los registros de compilación para ver si contienen más información sobre el motivo del error. Algunas causas comunes de los errores de cliente son las siguientes:
- La ubicación de origen que especificaste no tiene nada nuevo para confirmar y el árbol de trabajo está limpio. En este caso, verifica la ubicación del código fuente y vuelve a intentar compilar.
- Tu repositorio no contiene un archivo de configuración de compilación. Si es así, sube un archivo de configuración de compilación a tu repositorio y vuelve a ejecutar la compilación.
- Especificaste un ID de activador incorrecto.
- Hace poco agregaste un repositorio nuevo después de instalar la app de GitHub, y Cloud Build no tiene permisos para acceder al repositorio nuevo. Si es así, conecta tu repositorio nuevo a Cloud Build.
- Debes otorgar otro permiso a tu cuenta de servicio de compilación.
La compilación falla debido a restricciones de cuota
Verás el siguiente error, que indica que una compilación falla debido a restricciones de cuota en una región en particular:
Failed to trigger build: generic::failed_precondition: due to quota restrictions, cannot run builds in this region. Please contact support.
Comunícate con Atención al cliente de Cloud para que se aumenten tus cuotas para esta región en particular.
Problemas de tiempo de espera cuando se extraen imágenes del registro de Docker
Verás los siguientes errores de tiempo de espera en tu registro de Cloud Build después de ejecutar una compilación:
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
Para resolver el error, descarga la imagen de Docker con crane y continúa para cargar la imagen en la imagen de Docker de Cloud Build.
Agrega el siguiente fragmento a tu archivo 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: Es la dirección de tu proxy HTTP (p.ej.,https://proxy.example.com:8888/).
Una vez que se cargue la imagen, los pasos cloudbuid.yaml existentes deberían funcionar con normalidad, por ejemplo, los siguientes:
...
- 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
Errores Unauthenticated para pasos de Docker de larga duración
Los pasos de compilación que involucran un comando de Docker que se ejecuta durante más de una hora (como enviar una imagen grande a Artifact Registry) pueden fallar con un error de autenticación. Cloud Build actualiza los tokens de autenticación cada hora, pero es posible que Docker no pueda seleccionar estos tokens nuevos, lo que genera problemas de autenticación. Puedes escribir tu propio token con una vida útil personalizada en el archivo y hacer referencia a él para los comandos de Docker.
Compilaciones en cola en un grupo privado con intercambio de tráfico a una red de VPC
Cuando ejecutas compilaciones en un grupo privado cuya red de productor de servicios tiene intercambio de tráfico con tu propia red de VPC, es importante que la conexión privada entre estas dos redes permanezca intacta. Si borras la conexión privada en la que se basó un grupo privado, puedes interrumpir el grupo privado. Esto puede aparecer como compilaciones que permanecen en cola hasta que finalmente se agota el tiempo de espera. Por lo tanto, si deseas borrar una conexión privada, asegúrate de borrar también los grupos privados cuya red de productor de servicios se conectó a tu propia red de VPC con esta conexión privada.
Se intenta aprobar o rechazar compilaciones pendientes de más de 2 meses
No puedes aprobar ni rechazar compilaciones pendientes de más de 2 meses. Si lo intentas, es posible que se muestre un mensaje de error similar al siguiente:
404, "message": "Requested entity was not
found.", "status": "NOT_FOUND" } }
Si esto ocurre, intenta enviar una compilación nueva.
No se pudo crear el grupo privado: El grupo de trabajadores no tiene intercambio de tráfico con la API de Service Networking
Intentaste crear un grupo privado. Sin embargo, recibes el siguiente mensaje de error:
Failed to create private pool private-worker-pool: generic::failed_precondition: network "projects/PROJECT_NAME/global/networks/vpc-scmdev-lab-vpc" is not peered to the Service Networking API; please check your configuration and the documentation for troubleshooting and setting up your pool
Para que las compilaciones accedan a recursos privados desde tu red de nube privada virtual, debes configurar una conexión de intercambio de tráfico entre tu red de nube privada virtual y la red de nube privada virtual en la que residen los grupos privados. Para obtener instrucciones, consulta Configura una conexión privada entre tu red de VPC y la red del productor de servicios.
No se pudo crear el grupo privado: No se puede acceder a la configuración de peered_network
Si usas una VPC compartida o borraste el agente de servicio de Service Networking, es posible que falle la creación del grupo privado con un error similar al siguiente:
generic::permission_denied: cannot access peered_network config.
Para solucionar este problema, asegúrate de que el agente de servicio de Service Networking (service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com) exista en tu proyecto de servicio y tenga los permisos necesarios.
Crea la cuenta de servicio si falta:
gcloud beta services identity create \
--service=servicenetworking.googleapis.com \
--project=PROJECT_ID
Otorga a la cuenta de servicio el rol roles/servicenetworking.serviceAgent requerido:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com" \
--role="roles/servicenetworking.serviceAgent"
¿Qué sigue?
- Obtén más información para administrar los registros de compilación.