Skip to main content

Escolhendo o executor para um trabalho

Defina o tipo de máquina que processará um trabalho no seu fluxo de trabalho.

Visão geral

Use jobs.<job_id>.runs-on para definir o tipo de computador no qual o trabalho será executado.

  • O computador de destino pode ser um executor hospedado por GitHub, executor maior ou um executor auto-hospedado.

  • Você pode direcionar executores com base nos rótulos atribuídos a eles, ou na associação de grupo ou em uma combinação deles.

  • Você pode fornecer runs-on como:

    • uma única cadeia de caracteres
    • uma única variável que contém uma cadeia de caracteres
    • uma matriz de cadeias de caracteres, variáveis que contêm cadeias de caracteres ou uma combinação de ambas
    • um par de key: value usando as chaves group ou labels
  • Se você especificar uma matriz de cadeias de caracteres ou variáveis, o fluxo de trabalho será executado em qualquer executor que corresponda a todos os valores runs-on especificados. Por exemplo, aqui o trabalho só será executado em um executor auto-hospedado que tenha os rótulos linux, x64 e gpu:

    runs-on: [self-hosted, linux, x64, gpu]
    

    Para obter mais informações, confira "Como escolher executores auto-hospedados".

  • Você pode misturar cadeias de caracteres e variáveis em uma matriz. Por exemplo:

    on:
      workflow_dispatch:
        inputs:
          chosen-os:
            required: true
            type: choice
            options:
            - Ubuntu
            - macOS
    
    jobs:
      test:
        runs-on: [self-hosted, "${{ inputs.chosen-os }}"]
        steps:
        - run: echo Hello world!
    
  • Se você quiser executar seu fluxo de trabalho em vários computadores, use jobs.<job_id>.strategy.

Observação: as aspas não são obrigatórias em sequências simples, como self-hosted, mas são obrigatórias para expressões como "${{ inputs.chosen-os }}"..

Escolhendo executores hospedados em GitHub

Se você usar um executor hospedado no GitHub, cada trabalho será executado em uma nova instância de uma imagem do executor especificada por runs-on.

Os rótulos de executor hospedados em GitHub são:

SO (Rótulo de fluxo de trabalho YAML) Observações
ubuntu-latest, ubuntu-22.04, ubuntu-20.04 Atualmente, o rótulo ubuntu-latest usa a imagem do executor do Ubuntu 22.04.
windows-latest, windows-2022, windows-2019 Atualmente, o rótulo windows-latest usa a imagem do executor do Windows 2022.
macos-latest, macos-14, macos-13, macos-12, macos-11 Atualmente, o rótulo de fluxo de trabalho macos-latest usa a imagem do executor do macOS 14.

Para obter mais informações sobre as especificações dos executores hospedados no GitHub, confira "Sobre executores hospedados no GitHub".

Observação: as imagens do executor -latest são as imagens estáveis mais recentes fornecidas pelo GitHub e talvez não seja a versão mais recente do sistema operacional disponível do fornecedor do sistema operacional.

Aviso: as imagens beta e preteridas são fornecidas "no estado em que se encontram", "com todas as falhas" e "conforme disponível" e são excluídas do contrato de nível de serviço e da garantia. As imagens beta podem não ser cobertas pelo atendimento ao cliente.

Exemplo: Especificar um sistema operacional

runs-on: ubuntu-latest

Para obter mais informações, confira "Usar executores hospedados no GitHub".

Escolhendo executores auto-hospedados

Para especificar um executor auto-hospedado para seu trabalho, configure runs-on no arquivo de fluxo de trabalho com rótulos do executor auto-hospedado.

Os executores auto-hospedados podem ter o rótulo self-hosted. Ao configurar um corredor auto-hospedado, por padrão, incluiremos o rótulo self-hosted. Você pode passar o sinalizador --no-default-labels para impedir que o rótulo auto-hospedado seja aplicado. Rótulos podem ser usados para criar opções de segmentação para os executores, como sistema operacional ou arquitetura. Recomendamos fornecer uma matriz de rótulos que comece com self-hosted (isso deve ser listado primeiro) e depois inclua rótulos adicionais, conforme necessário. Quando você especificar uma matriz de rótulos, os trabalhos serão colocados na fila nos executores que têm todos os rótulos especificados.

Observe que o Action-runner-controller não oferece suporte a vários rótulos e não oferece suporte ao rótulo self-hosted.

Exemplo: Usando etiquetas para seleção do executor

runs-on: [self-hosted, linux]

Para obter mais informações, confira "Sobre executores auto-hospedados" e "Usar os executores auto-hospedados em um fluxo de trabalho."

Escolher executores em um grupo

Você pode usar runs-on para direcionar grupos de executores para que o trabalho seja executado em qualquer executor que seja membro desse grupo. Para um controle mais granular, você também pode combinar grupos de executores com rótulos.

Os grupos de executores só podem ter executor maiors ou executores auto-hospedados como membros.

Exemplo: usar grupos para controlar onde os trabalhos são executados

Neste exemplo, os executores do Ubuntu foram adicionados a um grupo chamado ubuntu-runners. A chave runs-on envia o trabalho para qualquer executor disponível no grupo ubuntu-runners:

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

Exemplo: combinar grupos e rótulos

Quando você combina grupos e rótulos, o executor deve atender aos dois requisitos para ser qualificado para executar o trabalho.

Neste exemplo, um grupo de executores chamado ubuntu-runners é preenchido com executores do Ubuntu, que também receberam o rótulo ubuntu-20.04-16core. A chave runs-on combina group e labels para que o trabalho seja roteado para qualquer executor disponível dentro do grupo que também tenha um rótulo correspondente:

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