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. Para obtener más información, vea «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. Para obtener más información, vea «Administrar los ajustes de las GitHub Actions de un repositorio».
Configuración de precompilaciones
-
En GitHub.com, navega a la página principal del repositorio. 1. 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.
Nota: Las ramas creadas a partir de una rama base habilitada previamente para la compilació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. Para obtener más información, vea «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
Nota: 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.
Notas:
- 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. Para obtener más información, vea «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. Para obtener más información, vea «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. Para obtener más información sobre la facturación, consulte "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.
-
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. Para obtener más información, vea «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.
Nota: También se pedirá que concedan estos permisos a los usuarios que creen codespaces que usan 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. Para obtener más información, vea «Administración de secretos cifrados para el repositorio y la organización en GitHub Codespaces» y «Administración de secretos cifrados para el repositorio y la organización en GitHub Codespaces».
Los secretos que crees de esta manera serán accesibles para cualquiera que cree un codespace desde este repositorio. Si no quiere este comportamiento, también puede establecer el secreto CODESPACES_PREBUILD_TOKEN
. El secreto CODESPACES_PREBUILD_TOKEN
solo se usa para la precompilación y su valor no es accesible en los codespaces de los usuarios.
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. Para más informació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.