Skip to main content

Configuración de precompilaciones

Puedes configurar tu proyecto para precompilar un codespace automáticamente cada vez que insertas un cambio en el repositorio.

¿Quién puede utilizar esta característica?

People with admin access to a repository can configure prebuilds for the repository.

La configuración de nivel de repositorio de GitHub Codespaces está disponible para todos los repositorios que pertenecen a cuentas personales.

En el caso de los repositorios pertenecientes a organizaciones, la configuración de nivel de repositorio de GitHub Codespaces está disponible para las organizaciones en los planes GitHub Team y GitHub Enterprise. Para acceder a la configuración, la organización o su empresa primaria deben haber agregado un método de pago y haber establecido un límite de gasto para GitHub Codespaces. Para obtener más información, vea «Selección de quién posee y paga los codespaces de una organización» y «Planes de GitHub».

Puedes configurar una configuración de precompilación para la combinación de una rama específica del repositorio con un archivo de configuración de contenedor de desarrollo específico.

Las ramas creadas a partir de una rama primaria habilitada previamente para la compilación normalmente también obtendrán precompilaciones para la misma configuración de contenedor de desarrollo. El motivo es que las precompilaciones para ramas secundarias que usan la misma configuración de contenedor de desarrollo que la rama primaria es, en su mayor parte, idéntica, por lo que los desarrolladores también se pueden beneficiar de tiempos de creación de codespaces más rápidos en esas ramas. Consulta Introducción a los contenedores dev.

Normalmente, al configurar precompilaciones para una rama, estarán disponibles para varios tipos de equipo. Pero si el repositorio es mayor de 32 GB, las precompilaciones no estarán disponibles para los tipos de máquina de 2 y 4 núcleos, ya que el almacenamiento que proporcionan está limitado a 32 GB.

Requisitos previos

Los precompilaciones se crean con GitHub Actions. Como resultado, GitHub Actions debe estar habilitado para el repositorio para el que vas a configurar las precompilaciones. Consulta Administrar los ajustes de las GitHub Actions de un repositorio.

Puedes configurar precompilaciones en cualquier repositorio que pertenezca a una cuenta personal. La precompilación consumirá espacio de almacenamiento que incurrirá en un cargo facturable o, en los repositorios que pertenecen a tu cuenta personal, usará parte del almacenamiento incluido mensualmente.

Note

Si crea precompilaciones para un repositorio bifurcado, el coste de almacenamiento de esas precompilaciones se resta del almacenamiento incluido mensualmente mientras está disponible. Si ha usado todo el almacenamiento incluido y ha configurado la facturación, se facturará su cuenta personal. Esto es cierto incluso cuando la organización que posee el repositorio primario paga los codespaces que crea para una bifurcación. Consulta Acerca de la facturación de GitHub Codespaces.

En el caso de los repositorios que pertenecen a una organización, puedes configurar precompilaciones si la organización está en un plan GitHub Team o GitHub Enterprise. Además, debes haber agregado un método de pago y establecido un límite de gasto para GitHub Codespaces en la cuenta de organización o en su empresa primaria. Consulta Administración del límite de gasto para GitHub Codespaces y Planes de GitHub.

Configuración de precompilaciones

  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. En la sección "Configuración de la precompilación" de la página, haz clic en Configurar precompilación.

    Captura de pantalla de la sección "Configuración previa de la compilación" de la página de configuración "Codespaces", que muestra el botón "Configurar precompilaciones".

  5. Elige la rama para la que quieras configurar las precompilaciones.

    Captura de pantalla de la configuración de un precompilación con un menú desplegable que enumera las ramas que se van a seleccionar. La rama "main" está seleccionada actualmente.

    Note

    Las ramas creadas a partir de una rama base habilitada para precompilación normalmente también obtendrán precompilaciones para la misma configuración de contenedor de desarrollo. Por ejemplo, si habilita las precompilaciones para un archivo de configuración de contenedor de desarrollo en la rama predeterminada del repositorio, las ramas basadas en la predeterminada también obtendrán precompilaciones en la mayoría de los casos para la misma configuración de contenedor de desarrollo.

  6. Opcionalmente, en el menú desplegable Archivo de configuración que se muestra, elige el archivo de configuración de devcontainer.json que quieres usar para esta plantilla de precompilaciones. Consulta Introducción a los contenedores dev.

    Captura de pantalla del menú desplegable del archivo de configuración. Se enumeran cuatro archivos de configuración, con ".devcontainer/devcontainer.json" seleccionado actualmente.

  7. Elige cómo quieres desencadenar automáticamente las actualizaciones de la precompilación.

    • Todas las inserciones (configuración predeterminada): con esta configuración, las precompilaciones se actualizarán en cada inserción realizada en la rama especificada. Esto garantizará que los codespaces generados a partir de una precompilación siempre contengan la configuración de codespace más reciente, incluidas las dependencias agregadas o actualizadas recientemente.

    • Al cambiar la configuración: con esta configuración, las precompilaciones se actualizarán cada vez que se cambie cualquiera de los archivos siguientes:

      • .devcontainer/devcontainer.json

        Note

        Los cambios en los archivos devcontainer.json de los subdirectorios de .devcontainer no desencadenan actualizaciones de precompilación.

      • Dockerfile al que se hace referencia en la propiedad build.dockerfile del archivo .devcontainer/devcontainer.json.

      Esta configuración garantiza que los cambios en los archivos de configuración del contenedor de desarrollo para el repositorio se usan cuando se genera un codespace a partir de una precompilación. El flujo de trabajo de GitHub Actions que actualiza los precompilaciones se ejecutará con menos frecuencia, por lo que esta opción usará menos minutos de GitHub Actions. Pero esta opción no garantizará que los codespaces siempre incluyan dependencias agregadas o actualizadas recientemente, por lo que es posible que tengan que agregarse o actualizarse manualmente después de crear un codespace.

    • Programado: con esta configuración, podrás actualizar la precompilación en una programación personalizada que definas. Esto puede reducir el consumo de minutos de GitHub Actions; sin embargo, con esta opción, se pueden crear codespaces que no usen los cambios más recientes en la configuración del contenedor de desarrollo.

    Captura de pantalla de la configuración "Desencadenadores de precompilación". La opción "Programada" está seleccionada y se establece en "Todos los días" a las "1 p. m. " y "3:30 p. m."

  8. Opcionalmente, selecciona Reducir precompilación disponible para solo regiones específicas para crear precompilaciones solo en regiones especificadas. Selecciona las regiones en las que quieres que estén disponibles las precompilaciones.

    De forma predeterminada, las precompilaciones se crean en todas las regiones disponibles, lo que conlleva cargos de almacenamiento por precompilación.

    Captura de pantalla de la configuración de "Disponibilidad de la región". "Reducir la precompilación disponible solo para regiones específicas" está seleccionada con dos regiones seleccionadas.

    Note

  9. Opcionalmente, en plantilla de precompilación, se establece el número de versiones que se conservarán. Puedes especificar cualquier número entre 1 y 5. El número predeterminado de versiones guardadas es 2, lo que significa que solo se guardan la más reciente y la versión anterior.

    Captura de pantalla de la configuración "Historial de plantillas". Se establece en 2 versiones.

    En función de la configuración del desencadenador de precompilaciones, la precompilación podría cambiar con cada inserción o en cada cambio de configuración del contenedor de desarrollo. Conservar las versiones anteriores de las precompilaciones permite crear una precompilación a partir de una confirmación anterior con una configuración de contenedor de desarrollo diferente a la de la precompilación actual. Esta configuración permite establecer el número de versiones retenidas en un nivel adecuado para tus necesidades.

    Si estableces el número de versiones de precompilaciones para guardar en 1, GitHub Codespaces solo guardará la más reciente y se eliminará la versión anterior cada vez que se actualice la plantilla. Esto significa que no obtendrás un codespace precompilado si vuelves a una configuración de contenedor de desarrollo anterior.

    Hay un costo de almacenamiento asociado a cada versión de precompilación que se conserva. Por ejemplo, si vas a generar precompilaciones en 4 regiones y conservas 2 versiones, se te cobrará por el almacenamiento de hasta 8 precompilaciones. Consulta Acerca de la facturación de GitHub Codespaces.

  10. Opcionalmente, agrega usuarios o equipos a quienes notificar cuando se produzca un error en la ejecución del flujo de trabajo de precompilación de esta configuración. Para empezar, puedes escribir un nombre de usuario, un nombre de equipo o un nombre completo y, luego, hacer clic en ellos cuando aparezcan para agregarlos a la lista. Los usuarios o equipos que agregues recibirán un correo electrónico cuando se produzcan errores de precompilación, con un vínculo a los registros de ejecución del flujo de trabajo para que puedan investigarlo más a fondo.

    Captura de pantalla de la configuración "Notificaciones de error". Se ha agregado el equipo denominado "octocat-team".

    Note

    Los usuarios solo recibirán notificaciones de precompilaciones con errores si han habilitado las notificaciones de flujos de trabajo de acciones con errores en su configuración personal. Consulta Configuración de notificaciones.

  11. Opcionalmente, en la parte inferior de la página, 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.

    En la sección "Opciones avanzadas", si seleccionas Deshabilitar optimización de precompilación, los codespaces se crearán sin un precompilado si se ha producido un error en el flujo de trabajo de precompilación más reciente o si se está ejecutando actualmente. Consulta Solución de problemas de precompilaciones.

  12. Haga clic en Crear.

    Si la configuración del contenedor de desarrollo para el repositorio especifica permisos para acceder a otros repositorios, se te mostrará una página de autorización. Para obtener más información sobre cómo se especifica esto en el archivo devcontainer.json, consulte "Administración del acceso a otros repositorios dentro del codespace".

    Haz clic en para ver los detalles de los permisos solicitados.

    Captura de pantalla de una página de autorización para una configuración de precompilación. En esta solicitud se muestran tres permisos.

    Haz clic en Autorizar y continuar para conceder estos permisos para la creación de precompilaciones. Como alternativa, puedes hacer clic en Continuar sin autorizar, pero, si lo haces, es posible que los codespaces creados a partir de las precompilaciones resultantes no funcionen correctamente.

    Note

    También se les pedirá que concedan estos permisos a los usuarios que creen codespaces usando esta precompilación.

Después de crear una configuración de precompilación, esta aparece en la página GitHub Codespaces de la configuración del repositorio. Se pone en cola un flujo de trabajo de GitHub Actions y, después, se ejecuta para crear precompilaciones en las regiones especificadas, en función de la rama y el archivo de configuración de contenedor de desarrollo seleccionados.

Captura de pantalla de la lista de configuraciones de precompilación. Se muestra una precompilación, con la etiqueta "Actualmente en ejecución". A la derecha de esto se encuentra un botón "Ver salida".

Para obtener información sobre cómo editar y eliminar configuraciones de precompilación, consulta Administración de precompilaciones.

Configurar variables de ambiente

Para permitir que el proceso de precompilación acceda a las variables de entorno necesarias para crear el entorno de desarrollo, puede establecerlas como secretos de repositorio de Codespaces, o bien como secretos de organización de Codespaces. Los secretos que crees de esta manera serán accesibles para cualquiera que cree un codespace desde este repositorio. Consulta Administración de secretos del entorno de desarrollo para el repositorio o la organización.

Las precompilaciones no pueden usar ningún secreto de nivel de usuario al compilar el entorno, ya que no están disponibles hasta después de crear el codespace.

Configuración de tareas que requieren mucho tiempo para incluirse en la precompilación

Puede usar los comandos onCreateCommand y updateContentCommand en devcontainer.json para incluir procesos lentos como parte de la creación de la precompilación. Consulta la documentación de Visual Studio Code, referencia de devcontainer.json.

onCreateCommand solo se ejecuta una vez, cuando se crea la precompilación, mientras que updateContentCommand se ejecuta en la creación de la precompilación y en las actualizaciones de plantilla posteriores a esta. Las compilaciones incrementales se deben incluir en updateContentCommand, ya que representan el origen del proyecto y deben incluirse para cada actualización de precompilación.

Información adicional