En esta página se ofrecen estrategias para solucionar problemas, así como soluciones para algunos mensajes de error habituales que pueden aparecer al ejecutar una compilación.
¿Has consultado 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
aparecen automáticamente en la consolaGoogle Cloud .
Las compilaciones manuales fallan porque el usuario no tiene acceso a los registros de compilación
Aparece el siguiente error al intentar ejecutar una compilación manualmente:
AccessDeniedAccess denied. [EMAIL_ADDRESS] does not have storage.objects.get access to the Google Cloud Storage object.
Este error se produce porque Cloud Build requiere que los usuarios que ejecutan compilaciones manuales y usan el segmento de registro predeterminado de Cloud Storage tengan el rol de lector del proyecto de gestión de identidades y accesos (IAM) además del rol de editor de Cloud Build. Para solucionar este error, puede hacer lo siguiente:
Usa el segmento de registro predeterminado y asigna los roles Lector del proyecto y Editor de Cloud Build al usuario que ejecuta la compilación. Para obtener instrucciones sobre cómo conceder este permiso, consulta el artículo Configurar el acceso a recursos de Cloud Build.
Crea tu propio segmento de Cloud Storage para almacenar los registros. Para obtener instrucciones, consulta el artículo Almacenar registros de compilación en un contenedor creado por un usuario.
Los compilaciones fallan porque faltan permisos de la cuenta de servicio
Si la cuenta de servicio que usas para tu compilación no tiene el permiso necesario para realizar una tarea, verás un error como el siguiente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE ACCOUNT]
Para solucionar este error, concede el permiso necesario a la cuenta de servicio. Usa la información de las páginas siguientes para determinar el permiso que debes conceder a tu cuenta de servicio de compilación:
- Configurar cuentas de servicio especificadas por los usuarios
- Cuenta de servicio predeterminada de Cloud Build
- Información sobre los roles de gestión de identidades y accesos
- Conceder permisos a la cuenta de servicio predeterminada de Cloud Build
Los errores de compilación debidos a la falta de permisos de las cuentas de servicio de compilación suelen producirse al intentar implementar con Cloud Build.
Error de permiso denegado al desplegar funciones de Cloud Run
Aparece el siguiente error al intentar usar funciones de Cloud Run:
ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.get' denied]
Para solucionar este error, asigna el rol de desarrollador de funciones de Cloud Run a tu cuenta de servicio de compilación.
Error de falta de permisos al desplegar funciones de Cloud Run
Aparece un error similar al siguiente cuando intentas desplegar funciones en Cloud Run:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE ACCOUNT]
Para solucionar este error, asigna el rol Usuario de cuenta de servicio a la cuenta de servicio especificada por el usuario o a la cuenta de servicio predeterminada.
Error al desplegar en App Engine
Cuando intentas implementar en App Engine, aparece un error similar al siguiente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE_ACCOUNT]
Para solucionar este error, asigna el rol Administrador de App Engine a la cuenta de servicio especificada por el usuario o a la cuenta de servicio predeterminada.
Error al desplegar en GKE
Cuando intentas implementar en GKE, aparece un error como el siguiente:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE_ACCOUNT]
Para solucionar este error, asigna el rol de desarrollador de GKE a tu cuenta de servicio de compilación.
Error al desplegar en Cloud Run
Aparece un error como el siguiente al intentar implementar en Cloud Run:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [SERVICE_ACCOUNT]
Este error se produce porque tu cuenta de servicio de compilación no tiene los permisos de gestión de identidades y accesos necesarios para implementar en Cloud Run. Para obtener información sobre cómo conceder los permisos necesarios, consulta el artículo Implementar en Cloud Run.
El activador de compilación falla porque falta el permiso cloudbuild.builds.create
Al ejecutar un activador de compilación, aparece un error similar al siguiente:
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 la cuenta de servicio no tiene el permiso de gestión de identidades y accesos cloudbuild.builds.create
, que es necesario para que la cuenta de servicio ejecute un activador de compilación. Para resolver este error, concede el Cloud Build Service Account
rol de gestión de identidades y accesos a la cuenta de servicio especificada por el usuario o a la cuenta de servicio predeterminada.
No se ha podido enviar la compilación porque faltan permisos del agente de servicio
Si el agente de servicio de Cloud Build se elimina o no tiene permisos, puede provocar el siguiente error al enviar 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.
En este caso, la persona que llama es el agente de servicio de Cloud Build. Para resolver este problema de permisos, sigue estos pasos:
Asegúrate de que el agente de servicio de Cloud Build exista. Para ver el agente de servicio de un proyecto, ve a la página Gestión de identidades y accesos Google Cloud de la consola y selecciona la casilla Mostrar cuentas de servicio gestionadas por Google. Si no aparece, puedes crearla ejecutando el siguiente comando de la CLI de gcloud:
gcloud beta services identity create --service=cloudbuild.googleapis.com \ --project=PROJECT_ID
A continuación, asigna el rol de
roles/cloudbuild.serviceAgent
gestión de identidades y accesos al 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 quieres verificar qué identidad de IAM podría haber provocado el problema de permisos del agente de servicio, sigue estos pasos:
Abre Explorador de registros en la Google Cloud consola:
Introduce 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 alguna entrada de registro después de usar esta consulta, comprueba si alguna de ellas elimina permisos del agente de servicio (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
). Si es así, consulta elprotoPayload.authenticationInfo.principalEmail
de ese registro para determinar la identidad de gestión de identidades y accesos responsable de eliminar el permiso o el rolroles/cloudbuild.serviceAgent
que contiene el permiso indicado en el mensaje de error.
El activador falla y se produce un error Couldn't read commit
Aparece el siguiente error al ejecutar un activador de compilación:
Failed to trigger build: Couldn't read commit
Cloud Build devuelve este mensaje si intentas activar una compilación con una rama que no existe. Revisa los nombres de los directorios para comprobar que no haya errores ortográficos y que sean coherentes. Para obtener instrucciones sobre cómo configurar los activadores, consulta Crear y gestionar activadores de compilación.
No se puede crear un activador de Pub/Sub
Al crear un activador de Pub/Sub, aparece el siguiente error:
Failed to create trigger: Request is prohibited by organization's policy
Este error indica que la API Pub/Sub está restringida en tu proyecto. Los proyectos que restringen la API Pub/Sub limitan la capacidad de crear suscripciones push. Puedes quitar temporalmente Pub/Sub de los servicios restringidos de tu perímetro, crear el activador y volver a restringir la API Pub/Sub para resolver el error.
No se pueden extraer ni obtener ramas de un repositorio privado debido al error fatal: could not read Username
Aparece el siguiente error al intentar realizar una operación git pull
o git fetch
en una rama remota de un repositorio privado:
fatal: could not read Username for '<REMOTE_URL>': No such device or address
Este error es habitual en los repositorios privados, ya que el asistente de credenciales de Git se elimina intencionadamente después de la clonación inicial del repositorio. Para obtener ramas remotas de un repositorio privado, configura manualmente las credenciales de autorización (tokens de API o claves SSH) como paso de compilació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
Aparece el siguiente error al ejecutar una compilación:
Could not parse ssh: [default]: invalid empty ssh-agent socket, make sure SSH_AUTH_SOCK is set
Este error indica que hay un problema con la autorización SSH. Un ejemplo habitual es el error de autorización de SSH que se produce al acceder a repositorios privados de GitHub con Cloud Build. Para obtener instrucciones sobre cómo configurar SSH para GitHub, consulta Acceder a repositorios privados de GitHub.
Las compilaciones fallan debido a un error No route to host
Aparece el siguiente error (o uno similar) al ejecutar 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 gestionado por Google
mediante los contenedores Docker. A la interfaz de puente de Docker (y, por lo tanto, a los contenedores conectados a esta interfaz) se le asigna un intervalo de IP 192.168.10.0/24
, lo que imposibilita la comunicación con los hosts externos de la misma subred. Al asignar los intervalos de IP a los recursos de tus proyectos durante la configuración del grupo privado, te recomendamos que selecciones un intervalo que no sea 192.168.10.0/24. Para obtener instrucciones, consulta Configurar el entorno para los grupos privados.
Falla la conexión a un recurso externo porque no se ha habilitado ninguna IP externa
Aparece el siguiente error al conectarse 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 de Internet públicos, como repositorios externos. Al crear o actualizar un grupo privado, marca la casilla para asignar IPs externas a tu grupo privado. Para obtener instrucciones sobre cómo crear o actualizar campos en tu grupo privado, consulta Crear y gestionar grupos privados.
Error de tiempo de espera de E/S
Aparece el siguiente error al ejecutar una compilación:
Timeout - last error: dial tcp IP_ADDRESS: i/o timeout
Este error puede producirse cuando tu compilación intenta acceder a recursos de una red privada, pero no lo consigue. De forma predeterminada, las compilaciones que se ejecutan a través de Cloud Build pueden acceder a recursos privados en la red pública de Internet, como los recursos de un repositorio o un registro. Sin embargo, las compilaciones solo pueden acceder a los recursos de una red privada si usas grupos privados y los configuras para que accedan a la red privada. Consulta Usar Cloud Build en una red privada.
Errores de cliente 4xx
Este grupo de errores indica que la solicitud de compilación no se ha realizado correctamente, probablemente por un error del usuario que ha enviado la solicitud. Estos son algunos ejemplos de errores de cliente 4xx:
**Error**: 404 : Requested entity was not found
**Error**: 404 : Trigger not found
**Error**: 400 : Failed Precondition
**Error**: 403 : Permission denied
Cuando veas un error 4xx de cliente, consulta los registros de compilación para ver si contienen más información sobre el motivo del error. Algunas de las causas habituales de los errores del cliente son las siguientes:
- La ubicación de origen que has especificado no tiene nada nuevo que confirmar y el árbol de trabajo está limpio. En ese caso, comprueba la ubicación del código fuente y vuelve a 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.
- Has especificado un ID de activador incorrecto.
- Has añadido recientemente un repositorio después de instalar la aplicación GitHub y Cloud Build no tiene permisos para acceder al nuevo repositorio. Si es así, conecta tu nuevo repositorio a Cloud Build.
- Debes conceder otro permiso a tu cuenta de servicio de compilación.
La compilación falla debido a restricciones de cuota
Aparece el siguiente error, que indica que una compilación falla debido a las restricciones de cuota en una región concreta:
Failed to trigger build: generic::failed_precondition: due to quota restrictions, cannot run builds in this region. Please contact support.
Ponte en contacto con el servicio de atención al cliente de Cloud para aumentar las cuotas de esta región concreta. Para obtener más información sobre las cuotas y los límites, consulta Cuotas y límites.
Problemas de tiempo de espera al extraer imágenes del registro de Docker
Tras una ejecución, ves los siguientes errores de tiempo de espera en el registro de Cloud Build:
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 solucionar el error, descarga la imagen Docker con crane y carga la imagen en la imagen Docker de Cloud Build.
Añade 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
: la dirección de tu proxy HTTP (por ejemplo,https://proxy.example.com:8888/
).
Una vez que se haya cargado la imagen, los pasos de cloudbuild.yaml que ya tengas deberían funcionar con normalidad. Por ejemplo:
...
- 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
errores en pasos de Docker de larga duración
Los pasos de compilación que implican 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 recoja estos nuevos tokens, lo que provoca problemas de autenticación. Puedes escribir tu propio token con un tiempo de vida personalizado en un archivo y hacer referencia a él en los comandos de Docker.
Compilaciones en cola en un grupo privado emparejado con una red de VPC
Cuando ejecutas compilaciones en un grupo privado cuya red de productores de servicios está emparejada con tu propia red de VPC, es importante que la conexión privada entre estas dos redes permanezca intacta. Si eliminas la conexión privada de la que dependía un grupo privado, puedes romper el grupo privado. Esto puede provocar que las compilaciones permanezcan en la cola hasta que se agote el tiempo de espera. Por lo tanto, si quieres eliminar una conexión privada, asegúrate de eliminar también todos los grupos privados cuya red de productor de servicios estuviera conectada a tu red de VPC mediante esta conexión privada.
Intentar aprobar o rechazar compilaciones pendientes de hace más de 2 meses
No puedes aprobar ni rechazar compilaciones pendientes que tengan más de 2 meses. Si lo intentas, puede que aparezca un mensaje de error como este:
404, "message": "Requested entity was not
found.", "status": "NOT_FOUND" } }
Si esto ocurre, prueba a enviar una nueva compilación.
Siguientes pasos
- Consulta cómo gestionar los registros de compilación.