Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
Para obtener información sobre cómo crear etiquetas personalizadas y predeterminadas, consulte "Uso de etiquetas con ejecutores autohospedados".
Uso de ejecutores autohospedados en un flujo de trabajo
Las etiquetas te permiten enviar jobs de flujo de trabajo a tipos específicos de ejecutores auto-hospedados, de acuerdo con sus características compartidas. Por ejemplo, si tu job requiere una componente de hardware o paquete de software específico, puedes asignar una etiqueta personalizada a un ejecutor y después configurar tu job para que solo se ejecute en los ejecutores con esta etiqueta.
A fin de especificar un ejecutor autohospedado para el trabajo, configure runs-on
en el archivo de flujo de trabajo con las etiquetas de ejecutor autohospedado.
Todos los ejecutores autohospedados tienen la etiqueta self-hosted
. El utilizar únicamente esta etiqueta seleccionará cualquier ejecutor auto-hospedado. Para seleccionar los ejecutores que cumplen con determinados criterios, como el sistema operativo o la arquitectura, se recomienda proporcionar una serie de etiquetas que comience con self-hosted
(debe estar en primer lugar) y que luego incluya etiquetas adicionales según sea necesario. Cuando especifiques un arreglo de etiquetas, los jobs se pondrán en cola cuando se trate de ejecutores que tengan todas las etiquetas que especificas.
Aunque la etiqueta self-hosted
no es obligatoria, se recomienda encarecidamente especificarla cuando se usen ejecutores autohospedados, para garantizar que el trabajo no especifique un ejecutor hospedado en GitHub futuro o actual por accidente.
Para obtener más información, consulte "Sintaxis de flujo de trabajo para GitHub Actions".
Utilizar etiquetas predeterminadas para enrutar jobs
Un ejecutor auto-hospedado recibe ciertas etiquetas automáticamente cuando se agrega a GitHub Actions. Estas se utilizan para indicar su sistema operativo y plataforma de hardware:
self-hosted
: etiqueta predeterminada que se aplica a todos los ejecutores autohospedados.linux
,windows
omacOS
: se aplica según el sistema operativo.x64
,ARM
oARM64
: se aplica en función de la arquitectura de hardware.
Puedes utilizar el YAML de tu flujo de trabajo para mandar jobs a las diferentes combinaciones de estas etiquetas. En este ejemplo, un ejecutor auto-hospedado que empate con las tres etiquetas será elegible para ejecutar el job:
runs-on: [self-hosted, linux, ARM64]
self-hosted
: ejecutar este trabajo en un ejecutor autohospedado.linux
: usar solo un ejecutor basado en Linux.ARM64
: usar solo un ejecutor basado en hardware ARM64.
Las etiquetas predeterminadas son fijas y no se pueden cambiar ni eliminar. Considera utilizar etiquetas personalizadas si necesitas más control sobre el enrutamiento de los jobs.
Utilizar etiquetas personalizadas para enrutar jobs
Puedes crear etiquetas personalizadas y asignarlas a tus ejecutores auto-hospedados en cualquier momento. Las etiquetas personalizadas te permiten enviar jobs a tipos particulares de ejecutores auto-hospedados, basándose en cómo se etiquetan.
Por ejemplo, si tiene un trabajo que requiere un tipo específico de hardware de gráficos, puede crear una etiqueta personalizada llamada gpu
y asignarla a los ejecutores que tengan instalado este hardware. Un ejecutor auto-hospedado que empate con las etiquetas asignadas será entonces elegible para ejecutar el job.
Este ejemplo muestra un job que combina etiquetas predeterminadas y personalizadas:
runs-on: [self-hosted, linux, x64, gpu]
self-hosted
: ejecutar este trabajo en un ejecutor autohospedado.linux
: usar solo un ejecutor basado en Linux.x64
: usar solo un ejecutor basado en hardware x64.gpu
: esta etiqueta personalizada se asignó manualmente a los ejecutores autohospedados con hardware de GPU instalado.
Estas etiquetas operan de manera acumulativa, así que un ejecutor auto-hospedado deberá tener las cuatro etiquetas para ser elegible para procesar el trabajo.
Precedencia de enrutamiento para los ejecutores auto-hospedados
Cuando se enruta un trabajo hacia un ejecutor autohospedado, GitHub busca un ejecutor que coincida con las etiquetas runs-on
del trabajo:
- GitHub primero busca un ejecutor a nivel de repositorio y luego a nivel organizacional, posteriormente, lo hace a nivel empresarial.
- El job se envía entonces a el ejecutor que coincida primero y que se encuentre en línea e inactivo.
- Si los ejecutores en línea coincidentes están ocupados, el job se pondrá en cola con la cantidad máxima de ejecutores coincidentes en línea.
- Si todos los ejecutores coincidentes están desconectados, el job se pondrá en cola a nivel de la cantidad máxima de ejecutores coincidentes desconectados.
- Si no hay ejecutores coincidentes en ningún nivel, el job fallará.
- Si el job permanece en cola por más de 24 horas, este fallará.