Soluciona errores de compilación

En esta página, se proporcionan estrategias de solución de problemas y soluciones para algunos mensajes de error comunes que pueden aparecer cuando ejecutas una compilación.

¿Tu compilación se aprueba de forma local?

Cuando solucionas los errores de Cloud Build, el primer paso siempre debe ser confirmar que puedes compilar de manera local. Si tu compilación no funciona de forma local, la causa raíz del problema no proviene de Cloud Build. Primero debes diagnosticar y solucionar el problema de forma local.

¿Revisaste 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 de forma automática en Cloud Console.

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 ejecuten compilaciones manuales y usen el componentebucket predeterminado de registros de Cloud Storage Tener la función de visualizador de proyecto de IAM además de la función de editor de Cloud Build. Para solucionar este error, puedes realizar una de las siguientes acciones:

Las compilaciones fallan porque faltan permisos de la cuenta de servicio

Cloud Build usa una cuenta de servicio especial para ejecutar compilaciones en tu nombre. Si la cuenta de servicio de Cloud Build no tiene el permiso necesario para realizar una tarea, verás el siguiente error:

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

Para solucionar este error, otorga a la cuenta de servicio el permiso necesario. Usa la información de las siguientes páginas para determinar el permiso a fin de otorgar a la cuenta de servicio de Cloud Build:

Las fallas de compilación debido a la falta de permisos para la cuenta de servicio suelen ocurrir cuando se intenta implementar con Cloud Build.

Error cuando se implementa en Cloud Functions

Verás el siguiente error cuando intentes implementar en Cloud Functions:

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

Para solucionar este error, otorga la función de desarrollador de Cloud Functions a la cuenta de servicio de Cloud Build.

Error en la implementación en App Engine

Verás el siguiente error cuando intentes implementar en App Engine:

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

Para solucionar este error, otorga la función de administrador de App Engine a la cuenta de servicio de Cloud Build.

Error en la implementación en GKE

Verás el siguiente error cuando intentes implementar en GKE:

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

Para solucionar este error, otorga la función de desarrollador de GKE a la cuenta de servicio de Cloud Build.

Se produjo un error cuando se implementaba en Cloud Run

Verás el siguiente error cuando intentes implementar en Cloud Run:

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

Verás este error porque la cuenta de servicio de Cloud Build no tiene los permisos de IAM necesarios para implementar en Cloud Run. Para obtener información sobre cómo otorgar los permisos necesarios, consulta Implementa en Cloud Run.

Error al almacenar imágenes en Container Registry

Verás el siguiente error cuando tu compilación intente almacenar imágenes compiladas en Container Registry:

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

Verás este error porque la cuenta de servicio de Cloud Build no tiene la función de administrador de almacenamiento necesaria para almacenar imágenes de contenedor en Container Registry.

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 que hay un problema con la autorización SSH. Un ejemplo común es un error de autorización de SSH que se produce cuando se accede a repositorios privados de GitHub con Cloud Build. Si deseas obtener instrucciones a fin de configurar SSH para GitHub, consulta Accede a repositorios privados de GitHub.

Las compilaciones fallan debido a No route to host error

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 en el proyecto administrado por Google mediante los contenedores de Docker. A la interfaz del puente Docker (y, en consecuencia, a los contenedores conectados a esta interfaz) se le asigna un rango de IP de 192.168.10.0/24, lo que hace que la comunicación con los hosts externos en la misma subred sea imposible. Cuando asignes los rangos de IP para recursos en tus proyectos durante la configuración del grupo privado, te recomendamos seleccionar un rango fuera de 192.168.10.0/24. A fin de obtener instrucciones, consulta Configura tu entorno para grupos privados.

El activador de compilación falla debido a la falta del permiso cloudbuild.builds.create

Verás el siguiente error 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 la cuenta de servicio de Cloud Build para crear una compilación. El error anterior indica que a la cuenta de servicio de Cloud Build 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 la función de IAM Cloud Build Service Account a [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com. Si deseas obtener instrucciones para otorgar esta función, consulta Configura el acceso a la cuenta de servicio de Cloud Build.

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

Por lo general, este error ocurre cuando tu compilación intenta acceder a los recursos en una red privada. Las compilaciones que se ejecutan a través de Cloud Build pueden acceder a recursos privados en la Internet pública, como recursos en un repositorio o un registro, sin embargo, no pueden acceder a los recursos en una red privada.

4xx errores de cliente

Este grupo de errores indica que la solicitud de compilación no se realiza de forma correcta por una falla del usuario. 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

Cuando veas un error de cliente 4xx, consulta tus registros de compilación para ver si contienen más información sobre el motivo del error. Algunas causas comunes de errores de cliente incluyen lo siguiente:

  • La ubicación de origen que especificaste no tiene nada nuevo que confirmar y el árbol de trabajo está limpio. En este caso, verifica la ubicación de tu código fuente y, luego, intenta compilar de nuevo.
  • El repositorio no contiene un archivo de configuración de compilación. Si este es el caso, 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.
  • Agregaste un repositorio nuevo hace poco después de instalar la app de GitHub, y Cloud Build no tiene permisos para acceder al repositorio nuevo. Si este es el caso, conecta tu repositorio nuevo a Cloud Build.

¿Qué sigue?