Explorar os executores

Concluído

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ários snaputilitá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:

  1. Baixar o aplicativo executor do repositório de executores do GitHub
  2. Configurar o executor com tokens de autenticação
  3. Instalar como um serviço (recomendado para produção)
  4. 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