Skip to main content

Solución de problemas de precompilaciones

Puedes usar precompilaciones para acelerar la creación de codespaces. En este artículo se proporcionan los pasos para la solución de problemas comunes con las precompilaciones.

Para más información sobre las precompilaciones GitHub Codespaces, consulta Precompilación de los codespaces.

¿Quiere comprobar si un codespace se ha creado a partir de una precompilación?

Al crear un codespace, puedes elegir el tipo de la máquina virtual que quieres usar. Si hay una precompilación disponible para el tipo de máquina virtual, "" Prebuild ready" (Precompilación preparada) se muestra a su lado.

Captura de pantalla de una lista de tipos de máquina disponibles: 2, 4, 8, 16 y 32 núcleos, todo con la etiqueta "Precompilación preparada".

Si tienes la preferencia del editor de GitHub Codespaces establecida en "Visual Studio Code para la web", en la página "Configuración del codespace" se mostrará el mensaje "Se ha encontrado un codespace precompilado" si se usa una precompilación.

Captura de pantalla de la página "Configurar el codespace", con el texto "Se encontró el codespace precompilado. Descargando la imagen".

Del mismo modo, si la preferencia del editor es "VS Code", el terminal integrado contendrá el mensaje "Estás en un codespace precompilado definido por la configuración de precompilación para el repositorio" al crear un codespace. Para más información, consulta Configuración del editor predeterminado para GitHub Codespaces.

Después de crear un codespace, puede comprobar si se ha creado a partir de una precompilación si ejecuta el comando GitHub CLI siguiente en el terminal:

Shell
gh api /user/codespaces/$CODESPACE_NAME --jq .prebuild

Esto devuelve true si el codespace se ha creado mediante una precompilación.

Como alternativa, si GitHub CLI (gh) no está instalado, puede usar el comando siguiente, que devuelve createFromPrebuild si el codespace se ha creado a partir de una precompilación:

Shell
cat /workspaces/.codespaces/shared/environment-variables.json | jq '.ACTION_NAME'

Comprobación del uso de precompilaciones

Puedes comprobar si un repositorio usa precompilaciones en la página "Codespaces" de la configuración del repositorio.

Puedes comprobar cuánto espacio de almacenamiento han consumido las precompilaciones en el ciclo de facturación actual revisando los datos de facturación de tu cuenta personal o profesional. También puedes generar un informe de uso para ver qué repositorios han usado precompilaciones. Para más información, consulta Visualización del uso de GitHub Codespaces.

En ocasiones falta la etiqueta "Prebuild Ready" (Listo para precompilación)

Puede que observes que, en ocasiones, al crear un codespace desde una rama habilitada para la precompilación, la etiqueta " Precompilación preparada" no se muestra en el cuadro de diálogo para elegir un tipo de máquina. Esto significa que las precompilaciones no están disponibles actualmente.

De forma predeterminada, cada vez que se inserta en una rama habilitada para precompilación, se actualiza la precompilación. Si la inserción implica un cambio en el contenedor de desarrollo, mientras la actualización está en curso, la etiqueta " Precompilación preparada" se quita de la lista de tipos de máquina. Durante este tiempo, todavía puede crear codespace sin una precompilación. Si es necesario, puede reducir las ocasiones en las que las precompilaciones no están disponibles para un repositorio estableciendo que la precompilación se actualice solo cuando realice un cambio en los archivos de configuración del contenedor de desarrollo o solo en una programación personalizada. Para más información, consulta Configuración de precompilaciones.

Si la rama no está habilitada específicamente para las precompilaciones, todavía se puede beneficiar de ellas si se bifurca desde una rama habilitada para la precompilación. Pero si la configuración del contenedor de desarrollo se cambia en la rama, de modo que no sea la mismo que la de la rama base, las precompilaciones ya no estarán disponibles en la rama.

Estos son los aspectos para comprobar si la etiqueta " Precompilación preparada" no se muestra para una rama determinada:

  • Confirme que existe una configuración de precompilación para esta rama. Si no es administrador del repositorio, tendrá que ponerse en contacto con uno para confirmarlo.
  • Confirme que la configuración de precompilación incluye la región.
  • Compruebe si se ha insertado recientemente un cambio de la configuración del contenedor de desarrollo en la rama habilitada para la precompilación. En caso afirmativo, normalmente tendrás que esperar hasta que se complete el flujo de trabajo de precompilación para esta inserción antes de que los precompilaciones vuelvan a estar disponibles.
  • Si no se han realizado cambios de configuración recientemente, ve a la pestaña Acciones del repositorio, haz clic en Codespaces Prebuilds (Precompilaciones) en la lista de flujos de trabajo y comprueba que las ejecuciones de flujo de trabajo de precomplilación para la rama son correctas. Si se ha producido un error en las ejecuciones más recientes de un flujo de trabajo y una o varias de estas ejecuciones con errores contenían cambios en la configuración del contenedor de desarrollo, no habrá precompilaciones disponibles para la rama asociada.

No se puede acceder a algunos recursos en codespaces creados mediante una precompilación

Si el archivo de configuración de devcontainer.json de una configuración de precompilación especifica que se requieren permisos para el acceso a otros repositorios, se pedirá al administrador del repositorio que autorice estos permisos cuando cree o actualice la configuración de precompilación. Si el administrador no concede todos los permisos solicitados, existe la posibilidad de que se produzcan problemas en la precompilación y en los codespaces creados a partir de la misma. Esto es cierto incluso si el usuario que crea un codespace basado en esta precompilación concede todos los permisos cuando se le pide que lo haga.

Solución de problemas de ejecuciones de flujo de trabajo con errores para precompilaciones

Aumento del límite de gasto de GitHub Actions

Las precompilaciones se crean y actualizan con GitHub Actions. Se producirá un error en los flujos de trabajo de precompilación si has usado todos los minutos de GitHub Actions y has alcanzado el límite de gasto. Si esto ocurre, puedes aumentar el límite de gasto de GitHub Actions para permitir que se ejecuten los flujos de trabajo. Para más información, consulta Administración del límite de gasto para las acciones de GitHub.

Autorización de permisos de acceso

Si se actualiza el archivo de configuración de devcontainer.json de una configuración de precompilación para especificar que se requieren permisos para el acceso a otros repositorios y no se ha solicitado a un administrador de repositorio que autorice estos permisos para la configuración de precompilación, es posible que se produzca un error en el flujo de trabajo de precompilación. Prueba a actualizar la configuración de precompilación sin realizar ningún cambio. Si, al hacer clic en Actualizar, se muestra la página de autorización, comprueba que los permisos solicitados son adecuados y, si es así, autoriza la solicitud. Para más información, consulta Administración de precompilaciones y Administración del acceso a otros repositorios dentro del codespace.

Si se produce un error en la ejecución del flujo de trabajo para una configuración de precompilación, puedes deshabilitar temporalmente la configuración de precompilación mientras investigas. Para más información, consulta Administración de precompilaciones.

Prevención del uso de precompilaciones obsoletas

De forma predeterminada, si se ha producido un error en el flujo de trabajo de precompilación más reciente, se usará una precompilación anterior para la misma combinación de repositorio, rama y archivo de configuración devcontainer.json para crear espacios de código. Este comportamiento se denomina "optimización de precompilación".

Se recomienda mantener habilitada la optimización de precompilación, ya que ayuda a garantizar que los codespaces sigan pudiéndose crear rápidamente si no hay disponible una precompilación actualizada. Aun así, como administrador del repositorio, puedes deshabilitar la optimización de precompilación si tienes problemas porque los codespaces precompilados están detrás del estado actual de la rama. En caso de que deshabilites la optimización de precompilación, los codespaces para la combinación pertinente de repositorio, rama y archivo devcontainer.json se crearán sin una precompilación si el flujo de trabajo de precompilación más reciente ha generado un error o se está ejecutando actualmente.

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la sección "Código y automatización" de la barra lateral, haz clic en Codespaces .

  4. A la derecha de la configuración de precompilación afectada, selecciona los puntos suspensivos ( ) y haz clic en Editar.

    Captura de pantalla de la lista desplegable de opciones de precompilaciones con "Editar" resaltado.

  5. Desplázate hasta la parte inferior de la página "Editar configuración" y haz clic en Mostrar opciones avanzadas.

    Captura de pantalla de la parte inferior de la página de configuración de precompilaciones. El vínculo "Mostrar opciones avanzadas" está resaltado con un contorno naranja oscuro.

  6. Si sabes con seguridad que quieres deshabilitar la configuración predeterminada, selecciona Deshabilitar la optimización de precompilación.

    Captura de pantalla de la configuración "Opciones avanzadas". La casilla con la etiqueta "Deshabilitar la optimización de precompilación" está seleccionada. Debajo está es el botón "Actualizar".

  7. Para guardar el cambio, haz clic en Actualizar.

Información adicional