Skip to main content

Uso de ejecutores autohospedados en un flujo de trabajo

Para usar los ejecutores autohospedados en un flujo de trabajo, puedes usar etiquetas o grupos a fin de especificar el ejecutor para un trabajo.

Nota:

Actualmente los ejecutores hospedados por GitHub no se admiten en GitHub Enterprise Server.

Utilizar etiquetas predeterminadas para enrutar tareas

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 los ejecutores autohospedados.
    
  •         `linux`, `windows` o `macOS`: se aplica según el sistema operativo.
    
  •         `x64`, `ARM` o `ARM64`: se aplica en función de la arquitectura de hardware.
    

Puedes utilizar el YAML de tu flujo de trabajo para enviar tareas a una combinación 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.
    

Para crear ejecutores autohospedados individuales sin las etiquetas predeterminadas, es necesario pasar la marca --no-default-labels al crear el ejecutor. El controlador del ejecutor de acciones no admite varias etiquetas.

Utilizar etiquetas personalizadas para enrutar tareas

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.

Uso de grupos para enrutar trabajos

En este ejemplo, se han agregado ejecutores de Ubuntu a un grupo denominado ubuntu-runners. La clave runs-on envía el trabajo a cualquier ejecutor disponible del grupo ubuntu-runners:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: ubuntu-runners
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Uso de etiquetas y grupos para enrutar trabajos

Al combinar grupos y etiquetas, el ejecutor debe cumplir ambos requisitos para poder ejecutar el trabajo.

En este ejemplo, un grupo de ejecutores denominado ubuntu-runners se rellena con ejecutores de Ubuntu, a los que también se ha asignado la etiqueta ubuntu-24.04-16core. La clave runs-on combina group y labels para que el trabajo se enrute a cualquier ejecutor disponible dentro del grupo que también tenga una etiqueta coincidente:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      group: ubuntu-runners
      labels: ubuntu-24.04-16core
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v