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ê.
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 ver a lista completa de tipos de executores, confira "Sobre executores hospedados no GitHub".
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.
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 trabalhoruns-on:
especificaubuntu-latest
. - O trabalho nomeado
Run-PSScriptAnalyzer-on-Windows
é executado em uma VM do Windows, porque o trabalhoruns-on:
especificawindows-latest
.
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 a saída podem ser exibidos na interface do usuário GitHub:
O aplicativo de executor do GitHub Actions tem código aberto. Você pode contribuir e apresentar problemas no repositório do executor.
Executores e recursos de hardware compatíveis
Observação: GitHub também oferece executor maiors, que estão disponíveis em configurações maiores. Para obter mais informações, confira "Usando executores maiores".
Especificação de hardware para máquinas virtuais do Windows e Linux:
- CPU de dois núcleos (x86_64)
- 7 GB de RAM
- 14 GB de espaço de SSD
Especificação de hardware para máquinas virtuais do macOS:
- CPU de três núcleos (x86_64)
- 14 GB de RAM
- 14 GB de espaço de SSD
Imagem do executor | Rótulo de fluxo de trabalho YAML | Observações |
---|---|---|
Windows Server 2022 |
windows-latest ou windows-2022
|
Atualmente, o rótulo windows-latest usa a imagem do executor do Windows Server 2022.
|
Windows Server 2019 |
windows-2019
|
Nenhum |
Ubuntu 22.04 |
ubuntu-latest ou ubuntu-22.04
|
Atualmente, o rótulo ubuntu-latest usa a imagem do executor do Ubuntu 22.04.
|
Ubuntu 20.04 |
ubuntu-20.04
|
Nenhuma |
Ubuntu 18.04 [preterido] |
ubuntu-18.04
|
Migre para ubuntu-20.04 ou ubuntu-22.04 . Para saber mais, confira esta postagem no blog do GitHub.
|
macOS Monterey 12 |
macos-latest , macos-12 , macos-latest-xl ou macos-12-xl
|
Atualmente, os rótulos dos fluxos de trabalho macos-latest e macos-latest-xl usam a imagem do executor do macOS 12.
|
macOS Big Sur 11 |
macos-11
|
Nenhum |
macOS Catalina 10.15 [preterido] |
macos-10.15
|
Migre para macOS-11 ou macOS-12 . Para saber mais, confira esta postagem no blog do 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.
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".
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 a lista geral das ferramentas incluídas para cada sistema operacional do executor, consulte os links abaixo:
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 18.04 LTS (preterido)
- Windows Server 2022
- Windows Server 2019
- macOS 12
- macOS 11
- macOS 10.15
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 Standard_DS2_v2
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. Para ver mais informações sobre os recursos de Standard_DS2_v2
, confira "Série Dv2 e DSv2" 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 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
Observação: se você usar uma lista de permissões de endereço IP para sua conta de organização ou de empresa do GitHub, não poderá usar os executores hospedados no GitHub e, em vez disso, precisará usar executores auto-hospedados. Para obter mais informações, confira "Sobre 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, confira a chave actions
na resposta do ponto de extremidade "Meta".
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 fornecidas pelo GitHub para construir caminhos de arquivo para os diretórios home
, workspace
e workflow
.
Diretório | Variável de ambiente | Descrição |
---|---|---|
home | HOME | Contém dados relacionados ao usuário. Por exemplo, esse diretório pode conter credenciais de uma tentativa de login. |
workspace | GITHUB_WORKSPACE | As 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.json | GITHUB_EVENT_PATH | A 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 "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/workspace
– Observação: o GitHub Actions precisa ser executado pelo usuário padrão do Docker (raiz). Verifique se o Dockerfile não define a instruçãoUSER
, caso contrário, você não poderá acessar oGITHUB_WORKSPACE
./github/workflow
Leitura adicional
- "Gerenciar cobranças no GitHub Actions (Ações do GitHub)"
- Você pode usar uma estratégia de matriz para executar seus trabalhos em várias imagens. Para obter mais informações, confira "Usando uma matriz para seus trabalhos".