Skip to main content

Sobre executores hospedados no GitHub

O GitHub oferece máquinas virtuais hospedadas para executar fluxos de trabalho. A máquina virtual tem um ambiente de ferramentas, pacotes e configurações disponíveis para uso no GitHub Actions.

Visão geral dos executores hospedados no GitHub

Os executores são as máquinas que fazem as execuções em um fluxo de trabalho GitHub Actions. Por exemplo, um executor pode clonar seu repositório localmente, instalar software de teste e executar comandos que avaliam seu código.

GitHub fornece executores que você pode usar para executar seus trabalhos ou você pode hospedar seus próprios executores. Cada executor hospedado em GitHub é uma nova VM (máquina virtual) hospedada por GitHub com o aplicativo executor e outras ferramentas pré-instaladas e está disponível com Ubuntu Linux, Sistemas operacionais Windows ou macOS. Ao usar um executor hospedada no GitHub, a manutenção e as atualizações da máquina são feitas para você.

Você pode escolher uma das opções padrão de executores hospedados da GitHub ou, se estiver no plano GitHub Team ou GitHub Enterprise Cloud, você poderá provisionar um runner com mais núcleos ou um executor alimentado por uma GPU ou processador ARM. Essas máquinas são chamadas de "executor maior." Para obter mais informações, confira "Sobre executores maiores".

O uso de executores hospedados em GitHub requer acesso à rede com velocidades de upload e download de pelo menos 70 quilobits por segundo.

Como usar um executor hospedado em GitHub

Para usar um executor hospedado em GitHub, crie uma tarefa e use runs-on para especificar o tipo de executor que processará a tarefa, como ubuntu-latest, windows-latest, ou macos-latest. Para obter a lista completa de tipos de executores, consulte "Sobre executores hospedados no GitHub." Se você tiver repo: write acesso a um repositório, poderá exibir uma lista dos executores disponíveis para uso em fluxos de trabalho no repositório. Para obter mais informações, consulte "Exibindo executores disponíveis para um repositório".

Quando o trabalho começa, GitHub provisiona automaticamente uma nova VM para esse trabalho. Todas as etapas da tarefa são executadas na VM, permitindo que as etapas dessa tarefa compartilhem informações usando o sistema de arquivos do executor. Você pode executar fluxos de trabalho diretamente na VM ou em um contêiner do Docker. Quando o trabalho for concluído, a VM será desativada automaticamente.

O diagrama a seguir demonstra como dois trabalhos em um fluxo são executados em dois executores hospedados em GitHub diferentes.

Diagrama de um fluxo de trabalho que consiste em dois trabalhos. Um trabalho é executado no Ubuntu e o outro no Windows.

O fluxo de trabalho de exemplo a seguir tem dois trabalhos, nomeados Run-npm-on-Ubuntu e Run-PSScriptAnalyzer-on-Windows. Quando esse fluxo de trabalho é disparado, GitHub provisiona uma nova máquina virtual para cada trabalho.

  • O trabalho nomeado Run-npm-on-Ubuntu é executado em uma VM Linux, porque o trabalho runs-on: especifica ubuntu-latest.
  • O trabalho nomeado Run-PSScriptAnalyzer-on-Windows é executado em uma VM do Windows, porque o trabalho runs-on: especifica windows-latest.
YAML
name: Run commands on different operating systems
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  Run-npm-on-Ubuntu:
    name: Run npm on Ubuntu
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm help

  Run-PSScriptAnalyzer-on-Windows:
    name: Run PSScriptAnalyzer on Windows
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install PSScriptAnalyzer module
        shell: pwsh
        run: |
          Set-PSRepository PSGallery -InstallationPolicy Trusted
          Install-Module PSScriptAnalyzer -ErrorAction Stop
      - name: Get list of rules
        shell: pwsh
        run: |
          Get-ScriptAnalyzerRule

Enquanto o trabalho é executado, os logs e a saída podem ser exibidos na interface do usuário GitHub:

Captura de tela da execução de um fluxo de trabalho. As etapas para o trabalho "Executar PSScriptAnalyzer no Windows" são exibidas.

O aplicativo de executor do GitHub Actions tem código aberto. Você pode contribuir e apresentar problemas no repositório do executor.

Exibindo executores disponíveis para um repositório

Se você tiver repo: write acesso a um repositório, poderá exibir uma lista dos executores disponíveis para o repositório.

  1. Em GitHub, acesse a página principal do repositório.

  2. No nome do repositório, clique em Ações.

    Captura de tela das guias do repositório "github/docs". A guia "Ações" está realçada com um contorno laranja.

  3. Na barra lateral esquerda, na seção "Gerenciamento", clique em Executores.

  4. Revise a lista de executores hospedados no GitHub disponíveis para o repositório.

  5. Opcionalmente, para copiar o rótulo de um corredor para usá-lo em um fluxo de trabalho, clique em à direita do corredor e clique em Copiar rótulo.

Observação: Os proprietários de empresas e organizações podem criar executores podem criar novos executores a partir desta página. Para criar um novo executores, clique em Novo executor no canto superior direito da lista de executores para adicionar executores ao repositório.

Para obter mais informações, confira "Gerenciar executores maiores" e "Adicionar executores auto-hospedados".

Executores e recursos de hardware compatíveis

Os executores hospedados pelo GitHub estão disponíveis para uso em repositórios públicos e privados.

Executores Linux hospedados no GitHub oferecem suporte a aceleração de hardware para Android SDK Tools, o que torna a execução de testes do Android muito mais rápida e consome menos minutos. Para obter mais informações sobre a aceleração de hardware do Android, confira Configurar a aceleração de hardware para o Android Emulator na documentação Desenvolvedores do Android.

Note

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.

Warning

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.

Executores padrão para repositórios públicos hospedados em GitHub

Para repositórios públicos, os trabalhos que usam os rótulos de fluxo de trabalho mostrados na tabela abaixo serão executados em máquinas virtuais com as especificações associadas. O uso desses executores em repositórios públicos é gratuito e ilimitado.

Máquina virtual Processador (CPU) Memória (RAM) Armazenamento (SSD) Rótulo do fluxo de trabalho
Linux 4 16 GB 14 GB ubuntu-latest, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04
Windows 4 16 GB 14 GB windows-latest, windows-2022, windows-2019
macOS 3 14 GB 14 GB macos-12
macOS 4 14 GB 14 GB macos-13
macOS 3 (M1) 7 GB 14 GB macos-latest, macos-14, macos-15 [Versão prévia pública]

Executores padrão hospedados no GitHub para repositórios privados

Para repositórios privados do , os trabalhos que usam os rótulos de fluxo de trabalho mostrados na tabela abaixo serão executados em máquinas virtuais com as especificações associadas. Esses executores usam a alocação de minutos gratuitos da sua conta GitHub e, em seguida, são cobrados pelas taxas por minuto. Para obter mais informações, confira "Sobre a cobrança das GitHub Actions".

Máquina virtual Processador (CPU) Memória (RAM) Armazenamento (SSD) Rótulo do fluxo de trabalho
Linux 2 7 GB 14 GB ubuntu-latest, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04
Windows 2 7 GB 14 GB windows-latest, windows-2022, windows-2019
macOS 3 14 GB 14 GB macos-12
macOS 4 14 GB 14 GB macos-13
macOS 3 (M1) 7 GB 14 GB macos-latest, macos-14, macos-15 [Versão prévia pública]

Lista de registros de fluxo de trabalho do executor usado para executar um trabalho. Para obter mais informações, confira "Visualizar o histórico de execução do fluxo de trabalho".

Limitações para executores do arm64 macOS

  • Todas as ações fornecidas pelo GitHub são compatíveis com executores arm64 hospedados pelo GitHub. No entanto, as ações da comunidade podem não ser compatíveis com o arm64 e precisam ser instaladas manualmente em tempo de execução.
  • A virtualização aninhada e os Metal Performance Shaders (MPS) não são suportados devido à limitação do Virtualization Framework da Apple.
  • Os recursos de rede, como a rede privada do Azure e a atribuição de IPs estáticos, não estão disponíveis atualmente para corredores maiores do macOS.
  • Os executores macOS arm64 não têm um UUID/UDID estático atribuído a eles porque a Apple não suporta esse recurso. No entanto, os executores Intel MacOS recebem um UDID estático, especificamente 4203018E-580F-C1B5-9525-B745CECA79EB. Caso esteja criando e assinando no mesmo host no qual planeja testar a compilação, você poderá assinar com um perfil de provisionamento de desenvolvimento. Caso precise de um DID estático, você poderá usar os executores Intel e adicionar seu UDID à sua conta de desenvolvedor da Apple.

Executor maiors

Os clientes nos planos GitHub Team e GitHub Enterprise Cloud podem escolher entre várias máquinas virtuais gerenciadas que têm mais recursos do que os executores hospedados standard GitHub-hosted runners. Essas máquinas são chamadas de "executor maior." Eles oferecem os seguintes recursos avançados:

  • Mais RAM, CPU e espaço em disco
  • Endereços IP estáticos
  • Rede privada do Azure
  • A capacidade de agrupar executores
  • Dimensionamento automático para oferecer suporte a fluxos de trabalho simultâneos
  • Executores alimentados por GPU e ARM

Esses executores avançados são hospedados pelo GitHub e têm o aplicativo executor e outras ferramentas previamente instalados.

Para obter mais informações, confira "Usando executores maiores".

Software compatível

As ferramentas do software incluídas em executores hospedados em GitHub são atualizadas semanalmente. O processo de atualização leva vários dias, e a lista de programas de software pré-instalados no branch main é atualizada após o término de toda a implantação.

Software pré-instalado

Os registros de fluxo de trabalho incluem um link para as ferramentas pré-instaladas no executor exato. Para encontrar essas informações no log de fluxo de trabalho, expanda a seção Set up job. Nessa seção, expanda a seção Runner Image. O link depois de Included Software descreverá as ferramentas pré-instaladas no executor que executou o fluxo de trabalho.

Para obter mais informações, confira "Visualizar o histórico de execução do fluxo de trabalho". Para consultar a lista completa das ferramentas incluídas em cada sistema operacional executor, confira a documentação Imagens disponíveis no repositório de imagens de execução.

Executores hospedados no GitHub incluem as ferramentas integradas padrão do sistema operacional, além dos pacotes listados nas referências acima. Por exemplo, os executores do Ubuntu e do macOS incluem grep, find e which, entre outras ferramentas padrão.

Você também pode exibir uma SBOM (lista de materiais de software) para cada build das imagens de executor do Windows e do Ubuntu. Para obter mais informações, confira "Fortalecimento de segurança para o GitHub Actions".

Usar software pré-instalado

Recomendamos usar ações para interagir com o software instalado nos executores. Essa abordagem tem vários benefícios:

  • Normalmente, as ações fornecem funcionalidades mais flexíveis, como seleção de versões, capacidade de passar argumentos e parâmetros
  • Ela garante que as versões da ferramenta usadas no seu fluxo de trabalho permaneçam as mesmas independentemente das atualizações do software

Se houver uma ferramenta que você deseja solicitar, abra um problema em actions/runner-images. Este repositório também contém anúncios sobre todas as principais atualizações de software nos executores.

Instalando software adicional

Você pode instalar um software adicional em executores hospedados em GitHub. Para obter mais informações, confira "Personalizando executores hospedados no GitHub".

Hosts da nuvem usados pelos executores hospedados em GitHub

O GitHub hospeda executores do Linux e Windows nas máquinas virtuais no Microsoft Azure com o aplicativo do executor GitHub Actions instalado. A o aplicativo do executor hospedado no GitHub é uma bifurcação do agente do Azure Pipelines. Os pacotes ICMP de entrada estão bloqueados para todas as máquinas virtuais do Azure. Portanto, é possível que os comandos ping ou traceroute não funcionem. O GitHub hospeda os executores do macOS nos data centers do Azure.

Para executores do Linux e do Windows, GitHub usa máquinas virtuais Dadsv5-series. Para obter mais informações, confira Séries Dasv5 e Dadsv5 na documentação do Microsoft Azure.

Os executores de GPU usam máquinas virtuais NCasT4_v3-series. Para ver mais informações, confira NCasT4_v3-series na documentação do Microsoft Azure.

Continuidade do fluxo de trabalho

Se os serviços de GitHub Actions estiverem temporariamente indisponíveis, a execução do fluxo de trabalho será descartada se não tiver sido enfileirada em 30 minutos após ser acionada. Por exemplo, se um fluxo de trabalho for acionado e os serviços de GitHub Actions não estiverem disponíveis por 31 minutos ou mais, a execução do fluxo de trabalho não será processada.

Além disso, se a execução do fluxo de trabalho entrar na fila com sucesso, mas não foi processado por um executor hospedado em GitHub dentro de 45 minutos, a execução do fluxo de trabalho na fila será descartada.

Privilégios administrativos

As máquinas virtuais do Linux e do macOS são executadas por meio do sudo sem senha. Quando precisar executar comandos ou instalar ferramentas que exigem mais privilégios do que o usuário atual, use o sudo sem precisar fornecer uma senha. Para obter mais informações, confira o "Manual do sudo".

As máquinas virtuais do Windows estão configuradas para ser executadas como administradores com Controle de Conta de Usuário (UAC) desativado. Para obter mais informações, confira "Como funciona o Controle de Conta de Usuário" na documentação do Windows.

Endereços IP

Para obter uma lista de intervalos de endereços IP que GitHub Actions usa para executores hospedados em GitHub, você poderá usar a API REST de GitHub. Para obter mais informações, confira a chave actions na resposta do ponto de extremidadeGET /meta. Para obter mais informações, confira "Pontos de extremidade da API REST para metadados".

Os executores do Windows e Ubuntu são hospedados no Azure e, consequentemente, têm as mesmas faixas de endereços IP que os centros de dados do Azure. Os executores do macOS estão hospedados na própria nuvem do macOS de GitHub.

Como há muitos intervalos de endereços IP para executores hospedados em GitHub, não recomendamos que você os use como listas de permissões para seus recursos internos. Em vez disso, recomendamos que você use executor maiors com um intervalo de endereços IP estáticos ou executores auto-hospedados. Para obter mais informações, confira "Usando executores maiores" ou "Sobre executores auto-hospedados".

A lista de endereços IP de GitHub Actions retornados pela API é atualizada uma vez por semana.

Requisitos de comunicação para executores hospedados em GitHub e GitHub

Um executor hospedado em GitHub deve estabelecer conexões com pontos de extremidade de propriedade de GitHub para executar operações de comunicação essenciais. Além disso, seu executor pode exigir acesso a redes adicionais que você especificar ou utilizar dentro de uma ação.

Para garantir comunicações adequadas para executores hospedados em GitHub entre redes dentro de sua configuração, verifique se as comunicações a seguir são permitidas.

Note

Alguns dos domínios listados são configurados por meio de registros CNAME. Alguns firewalls podem exigir que você adicione regras de maneira recursiva para todos os registros CNAME. Observe que os registros CNAME poderão mudar no futuro e que apenas os domínios listados permanecerão constantes.

Necessário para operações essenciais:

Shell
github.com
api.github.com
*.actions.githubusercontent.com

Necessário para baixar as ações:

Shell
codeload.github.com
ghcr.io
*.actions.githubusercontent.com

Necessário para upload/download de caches e artefatos de fluxo de trabalho:

Shell
results-receiver.actions.githubusercontent.com
*.blob.core.windows.net

Necessário para as atualizações de versão do executor:

Shell
objects.githubusercontent.com
objects-origin.githubusercontent.com
github-releases.githubusercontent.com
github-registry-files.githubusercontent.com

Necessário para recuperar tokens OIDC:

Shell
*.actions.githubusercontent.com

Necessário para baixar ou publicar pacotes ou contêineres em pacotes do GitHub:

Shell
*.pkg.github.com
ghcr.io

Necessário para o Git Large File Storage

Shell
github-cloud.githubusercontent.com
github-cloud.s3.amazonaws.com

Necessário para trabalhos das Dependabot updates

Shell
dependabot-actions.githubapp.com

O arquivo etc/hosts

Os executores hospedados pelo GitHub são provisionados com um arquivo etc/hosts que bloqueia o acesso à rede a vários pools de mineração de criptomoedas e sites mal-intencionados. Hosts como MiningMadness.com e cpu-pool.com são redirecionados para localhost para que não apresentem um risco de segurança significativo.

Sistemas de arquivos

O GitHub executa ações e comandos de shell em diretórios específicos na máquina virtual. Os caminhos dos arquivos nas máquinas virtuais não são estáticos. Use as variáveis de ambiente fornecidas pelo GitHub para construir caminhos de arquivo para os diretórios home, workspace e workflow.

DiretórioVariável de ambienteDescrição
homeHOMEContém dados relacionados ao usuário. Por exemplo, esse diretório pode conter credenciais de uma tentativa de login.
workspaceGITHUB_WORKSPACEAs ações e comandos do shell executados neste diretório. Uma ação pode modificar o conteúdo desse diretório, que fica acessível nas ações subsequentes.
workflow/event.jsonGITHUB_EVENT_PATHA carga POST do evento de webhook que disparou o fluxo de trabalho. O GitHub o rescreve sempre que uma ação é executada para isolar o conteúdo do arquivo entre as ações.

Para ver uma lista das variáveis de ambiente criadas pelo GitHub para cada fluxo de trabalho, confira "Armazenar informações em variáveis".

Sistema de arquivos do contêiner Docker

As ações executadas em contêineres do Docker têm diretórios estáticos no caminho /github. No entanto, é altamente recomendável usar as variáveis de ambiente padrão para elaborar caminhos de arquivos em contêineres do Docker.

O GitHub reserva o prefixo de caminho /github e cria três diretórios para as ações.

  • /github/home
  • /github/workspaceObservação: o GitHub Actions precisa ser executado pelo usuário padrão do Docker (raiz). Verifique se o Dockerfile não define a instrução USER, caso contrário, você não poderá acessar o GITHUB_WORKSPACE.
  • /github/workflow

Leitura adicional