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
-
En GitHub, navegue hasta la página principal del repositorio.
-
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.
-
En la sección "Código y automatización" de la barra lateral, haz clic en Codespaces .
-
En la sección "Configuración de la precompilación" de la página, haz clic en Configurar precompilación.
-
Elige la rama para la que quieras configurar las precompilaciones.
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.
-
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. -
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.
-
-
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.
Note
- La compilación previa en cada región incurre en cargos de almacenamiento individuales. Por tanto, solo debe habilitar las precompilaciones para las regiones en las que sabe que se van a usar. Consulta Acerca de la facturación de GitHub Codespaces.
- Los desarrolladores pueden establecer su región predeterminada para GitHub Codespaces, lo que te permite habilitar precompilaciones para menos regiones. Consulta Configuración de la región predeterminada para GitHub Codespaces.
-
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.
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.
-
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.
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.
-
Opcionalmente, en la parte inferior de la página, haz clic en Mostrar opciones avanzadas.
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.
-
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.
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.
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.