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.

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

Visão geral

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

  • 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 string
    • 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

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

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.

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

Exemplo: usar prefixos para diferenciar grupos de executores

Por exemplo, se você tiver um grupo de executores chamado my-group na organização e outro chamado my-group na empresa, poderá atualizar seu arquivo de fluxo de trabalho para usar org/my-group ou ent/my-group para diferenciar os dois.

Usando org/:

runs-on:
  group: org/my-group
  labels: [ self-hosted, label-1 ]

Usando ent/:

runs-on:
  group: ent/my-group
  labels: [ self-hosted, label-1 ]