Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

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 em GitHub

Os executores são as máquinas que executam trabalhos em um fluxo de trabalho de GitHub Actions. Por exemplo, um executor pode clonar seu repositório localmente, instalar um software de teste e, em seguida, 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 de GitHub é uma nova máquina virtual (VM) hospedada por GitHub com o aplicativo do executor e outras ferramentas pré-instaladas e está disponível com sistemas operacionais Ubuntu Linux, 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ê.

Usando um executor hospedado em GitHub

Para usar um executor hospedado em GitHub, crie um trabalho e use runs-on para especificar o tipo de executor que irá processar o trabalho como, por exemplo, ubuntu-latest, windows-latest ou macos-latest. Para oter a lista completa de tipos de executores, consulte "Executores e recursos de hardware compatíveis".

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

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

Dois executores processando trabalhos separados

O fluxo de trabalho a seguir tem dois trabalhos, denminados Run-npm-on-Ubuntu e Run-PSScriptAnalyzer-on-Windows. Quando este fluxo de trabalho é acionado, GitHub disponibiliza uma nova máquina virtual para cada trabalho.

  • O trabalho denominado Run-npm-on-Ubuntu é executado em uma VM do Linux, porque o trabalho runs-on: especifica ubuntu-latest.
  • O trabalho denominado Run-PSScriptAnalyzer-on-Windows é executado na 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@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm help

  Run-PSScriptAnalyzer-on-Windows:
    name: Run PSScriptAnalyzer on Windows
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3
      - 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 saídas podem ser visualizados na interface de usuário de GitHub:

Saída do trabalho na Interface de usuário do Actions

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

Executores e recursos de hardware compatíveis

Especificação de hardware para máquinas virtuais do Windows e Linux:

  • CPU dual core
  • 7 GB of RAM
  • 14 GB of SSD space

Especificação de hardware para máquinas virtuais do macOS:

  • CPU de 3 núcleos
  • 14 GB of RAM
  • 14 GB of SSD space
Ambiente virtual Etiqueta de fluxo de trabalho YAML Observações
Windows Server 2022 windows-latest ou windows-2022 O rótulo windows-latest usa atualmente a imagem do executor do Windows Server 2022.
Windows Server 2019 windows-2019
Ubuntu 22.04 ubuntu-22.04 O Ubuntu 22,04 está atualmente em beta público.
Ubuntu 20.04 ubuntu-latest ou ubuntu-20.04
Ubuntu 18.04 ubuntu-18.04
macOS Monterey 12 macos-12
macOS Big Sur 11 macos-latest or macos-11 A etiqueta macos-latest usa a imagem do executor macOS 11 atualmente.
macOS Catalina 10.15 macos-10.15

Observação: Os -últimos ambientes virtuais são as últimas imagens estáveis que GitHub fornece, e podem não ser a versão mais recente do sistema operacional disponível no fornecedor do sistema operacional.

Observação: Imagens Beta e Depreciadas são fornecidas "como se apresentam", "com todas as falhas" e "como disponível" e são excluídas da garantia e do contrato de nível de serviço. Imagens Beta podem não estar cobertas pelo suporte ao cliente.

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

Software compatível

As ferramentas do software incluídas em executores hospedados em GitHub são atualizadas semanalmente. O processo de atualização demora vários dias, e a lista de softwares pré-instalados no branch principal é atualizada quando a implementação inteira é finalizada.

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 fluxo do fluxo de trabalho, expanda a seção Configurar trabalho. Nessa seção, expanda a seção Ambiente virtual. O link seguinte Software Incluído descreverá as ferramentas pré-instaladas no executor que executaram o fluxo de trabalho. Installed software link Para obter mais informações, consulte "Visualizar histórico de execução de fluxo de trabalho".

Para a lista geral das ferramentas incluídas para cada sistema operacional do executor, consulte os links abaixo:

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.

Usar software pré-instalado

Recomendamos usar ações para interagir com o software instalado nos executores. Esta 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ê queira solicitar, abra um problema em actions/virtual-environments. 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, consulte "Personalizar executores hospedados no GitHub".

Hosts na nuvem usados por executores hospedados em GitHub

GitHub hospeda executores do Linux e do Windows em máquinas virtuais de Standard_DS2_v2 no Microsoft Azure com o aplicativo do executor de 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. Para obter mais informações sobre os recursos de Standard_DS2_v2, consulte "Dv2 e DSv2-series" na documentação do Microsoft Azure.

GitHub hospedas executores do macOS na nuvem do macOS do próprio GitHub.

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 Linux e macOS executam usando autenticação sem senha sudo. Quando precisar executar comandos ou instalar ferramentas que exigem mais permissões que o usuário atual possui, você pode usar sudo sem a necessidade de fornecer uma senha. Para obter mais informações, consulte 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, consulte "Como funciona o Controle de Conta de Usuário" na documentação do Windows.

Endereços IP

Observação: Se você usar uma lista de permissões de endereço IP para a sua organização ou conta corporativa de GitHub, você não poderá usar executores hospedados em GitHub. Em vez disso, deverá usar executores auto-hospedados. Para obter mais informações, consulte "Sobre os executores auto-hospedados."

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, consulte a chave de ações na resposta do ponto de extremidade "Obtenha as metainformações do GitHub".

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.

Uma vez que existem tantos intervalos de endereços IP para executores hospedados em GitHub, não recomendamos que você os utilize como listas de permissões para os seus recursos internos.

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

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 que GitHub fornece para construir caminhos de arquivos para os diretórios home, workspace e workflow.

DiretórioVariável de ambienteDescrição
casaHOMEConté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_PATHO payload do POST do evento webhook que acionou 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 obter uma lista das variáveis de ambiente que GitHub cria para cada fluxo de trabalho, consulte "Usar variáveis de ambiente".

Sistema de arquivos do contêiner Docker

Ações executadas em contêineres 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 ações.

  • /github/home
  • /github/workspace - Observação: GitHub Actions deve ser executado pelo usuário do Docker padrão (raiz). Certifique-se de seu arquivo do Dockerfile não defina a instrução USUÁRIO. Caso contrário, você não conseguirá acessar GITHUB_WORKSPACE.
  • /github/workflow

Leia mais