Explorar os executores
Os executores do GitHub são os ambientes de computação que executam seus fluxos de trabalho do GitHub Actions. Entender os executores é essencial para otimizar o desempenho, gerenciar custos e garantir a segurança nos seus pipelines de CI/CD.
Visão geral dos tipos de Runner
O GitHub fornece duas opções de executor distintas, cada uma adequada para cenários diferentes:
Executores hospedados no GitHub
- Gerenciado pelo GitHub: totalmente mantido e atualizado pelo GitHub
- Escalabilidade sob demanda: provisionados automaticamente para cada trabalho
- Vários ambientes: Ubuntu, Windows e macOS disponíveis
- Ferramentas internas: pré-instaladas com ferramentas de desenvolvimento comuns
- Cobrança baseada em uso: pagar somente pelo que você usa
Executores auto-hospedados
- Gerenciado por você: controle total sobre o ambiente e a configuração
- Ambientes personalizados: instalar qualquer configuração de hardware ou software necessária
- Infraestrutura privada: é executada em seus próprios computadores ou instâncias de nuvem
- Sem limites de tempo: os trabalhos podem ser executados o tempo necessário
- Custos fixos: sem encargos por minuto após a instalação
Considerações de segurança
Importante
Nunca use executores auto-hospedados com repositórios públicos. Isso cria uma vulnerabilidade de segurança séria em que atores mal-intencionados podem executar código em sua infraestrutura por meio de solicitações de pull.
Padrões de uso seguro:
- Use executores auto-hospedados somente com repositórios privados
- Implementar isolamento e monitoramento de rede adequados
- Atualizar regularmente o software e as dependências do executor
- Usar computadores dedicados que não contêm dados confidenciais
Executores hospedados no GitHub
Os executores hospedados no GitHub fornecem uma solução de manutenção zero para executar seus fluxos de trabalho. O GitHub manipula todo o gerenciamento de infraestrutura, permitindo que você se concentre no código em vez da administração do servidor.
Ambientes disponíveis
O GitHub oferece vários tipos de executor com especificações diferentes:
| Tipo de executador | Versão do sistema operacional | Processador | RAM | Armazenamento |
|---|---|---|---|---|
ubuntu-latest |
Ubuntu 22.04 | CPU de 4 núcleos | 16 GB | SSD de 14 GB |
windows-latest |
Windows Server 2022 | CPU de 4 núcleos | 16 GB | SSD de 14 GB |
macos-latest |
macOS 14 | CPU de 4 núcleos | 14 GB | SSD de 14 GB |
macos-13 |
macOS 13 | CPU de 4 núcleos | 14 GB | SSD de 14 GB |
Software pré-instalado
Cada executor vem com um conjunto abrangente de ferramentas de desenvolvimento:
Ferramentas comuns em todas as plataformas:
- Git, Docker, Node.js, Python, Java, .NET
- Gerenciadores de pacotes (npm, pip, Maven, NuGet)
- Ferramentas de construção e compiladores
- Frameworks de teste
Ferramentas específicas da plataforma:
-
Ubuntu:
apt, váriossnaputilitários do Linux - Windows: PowerShell, Ferramentas de Build do Visual Studio, SDK do Windows
- macOS: Xcode, Homebrew, CocoaPods
Dica
Verifique o inventário completo de software no repositório de imagens do executor ou exiba a seção "Configurar trabalho" nos logs do fluxo de trabalho.
Limites e considerações de uso
Entender esses limites ajuda você a planejar seus fluxos de trabalho efetivamente:
- Tempo limite de trabalho: máximo de 6 horas por trabalho
- Tempo limite do fluxo de trabalho: máximo de 35 dias (incluindo tempo de espera)
- Trabalhos simultâneos: Varia de acordo com o plano do GitHub (20 gratuitamente, 180 para Profissionais)
- Armazenamento: 500 MB de armazenamento de artefatos por trabalho
Pré-requisitos
Antes de usar os executores hospedados no GitHub, os usuários devem ter um repositório GitHub em que possam definir fluxos de trabalho usando o GitHub Actions. Os executores estão disponíveis para todos os usuários do GitHub com acesso ao GitHub Actions.
Configuração
Ao contrário dos executores auto-hospedados, os hospedados no GitHub são configurados automaticamente como parte de uma execução de fluxo de trabalho individual. Os usuários definem fluxos de trabalho como arquivos formatados em YAML armazenados no diretório .github/workflows em repositórios do GitHub. Dentro da configuração do fluxo de trabalho, os usuários especificam o ambiente desejado do executor, incluindo o sistema operacional e as dependências de software. Os executores com especificações correspondentes são configurados sob demanda sempre que o fluxo de trabalho é disparado, com um executor por trabalho. Os gatilhos podem ser manuais ou automáticos, com base em eventos como pushes de código, solicitações de pull ou eventos de expedição de repositório.
Os executores hospedados no GitHub autenticam-se com o GitHub usando tokens ou credenciais fornecidas pelo GitHub Actions. Eles dependem da conectividade interna para se comunicar com a plataforma GitHub e baixar artefatos de fluxo de trabalho.
Manutenção
O GitHub gerencia atualizações e manutenção de executores hospedados no GitHub, garantindo que eles permaneçam atualizados com as versões de software mais recentes e patches de segurança. As ferramentas de software incluídas nos executores são atualizadas semanalmente. As atividades do executor são monitoradas e registradas em log, facilitando o acompanhamento de execuções de fluxo de trabalho e solução de problemas.
Licenciamento e custo
Os executores hospedados no GitHub estão incluídos nos preços do GitHub Actions, com cobrança baseada em uso para minutos de fluxo de trabalho além da camada gratuita. Os usuários se beneficiam da escala automatizada e econômica, pois o GitHub provisiona e desaloca automaticamente os executores com base na demanda.
Executores auto-hospedados
Os executores auto-hospedados oferecem controle total sobre seu ambiente de execução. Eles são ideais quando você precisa de hardware específico, configurações de software ou deseja reduzir custos para fluxos de trabalho de alto volume.
Quando usar executores auto-hospedados
Perfeito para:
- Requisitos de hardware específicos: aceleração de GPU, memória alta ou processadores personalizados
- Acesso à rede privada: conectar-se a bancos de dados internos, APIs ou serviços
- Software personalizado: ferramentas proprietárias pré-instaladas ou versões de software específicas
- Otimização de custo: fluxos de trabalho de alto volume em que a cobrança por minuto se torna cara
- Requisitos de conformidade: os dados devem permanecer em sua infraestrutura
Não recomendado para:
- Repositórios públicos (risco de segurança)
- Fluxos de trabalho ocasionais ou de baixo volume
- Equipes sem experiência de gerenciamento de infraestrutura
Opções de implantação
Você pode executar executores auto-hospedados em várias plataformas:
- Servidores físicos: hardware local
- Máquinas virtuais: VMware, Hyper-V ou outros hipervisores
- Instâncias de nuvem: AWS EC2, VMs do Azure, Google Compute Engine
- Contêineres: contêineres do Docker (com limitações)
- Kubernetes: Utilizando o Action Runner Controller
Processo de configuração
A configuração de um executor auto-hospedado envolve estas etapas principais:
- Baixar o aplicativo executor do repositório de executores do GitHub
- Configurar o executor com tokens de autenticação
- Instalar como um serviço (recomendado para produção)
- Configurar etiquetas para alocar executores específicos em fluxos de trabalho
Requisitos de rede:
- Acesso HTTPS (443) de saída para GitHub.com
- Acesso de saída via HTTPS (443) para objects.githubusercontent.com
- Nenhuma conexão de entrada é necessária
Escopos e gerenciamento do Runner
Os executores auto-hospedados podem ser registrados em diferentes níveis organizacionais:
| Scope | Nível de Acesso | Caso de Uso |
|---|---|---|
| Repositório | Somente repositório único | Ambientes de desenvolvimento/teste |
| Organização | Todos os repositórios na organização | Recursos de equipe compartilhados |
| Empresa | Todas as unidades organizacionais na empresa | Gerenciamento centralizado de infraestrutura |
Direcionar executores em fluxos de trabalho
Use rótulos para indicar qual runner deve executar seu trabalho.
jobs:
build:
runs-on: [self-hosted, linux, x64, gpu]
steps:
- name: Build with GPU acceleration
run: ./build-with-cuda.sh
Responsabilidades de manutenção
Como o proprietário do corredor, você é responsável por:
- Atualizações de segurança: manter o aplicativo executor e o sistema operacional atualizados
- Gerenciamento de software: instalar e manter as ferramentas de desenvolvimento necessárias
- Monitoramento: acompanhar a integridade do executor e as métricas de desempenho
- Planejamento de capacidade: dimensionar executores com base nas demandas de fluxo de trabalho
- Backup e recuperação: garantir que as configurações do executor sejam incluídas no backup
Considerações de custo
Embora os executores auto-hospedados não gerem cobranças de minutos do GitHub Actions, considere estes custos:
- Infraestrutura: servidores, instâncias de nuvem ou orquestração de contêiner
- Manutenção: tempo gasto em atualizações, monitoramento e solução de problemas
- Segurança: ferramentas e processos adicionais para gerenciamento seguro de executores
- Energia e resfriamento: para implantações locais
Dicas de otimização de custo:
- Usar o dimensionamento automático para corredores baseados em nuvem
- Implementar pool de executores para vários repositórios
- Agendar o desligamento dos executores fora do horário de pico
- Monitorar a utilização de recursos para dimensionar corretamente as instâncias