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.

Redimensionamento automático com executores auto-hospedados

Você pode dimensionar automaticamente seus executores auto-hospedados em resposta a eventos de webhooks.

Observação: Executores hospedados em GitHub não são atualmente compatíveis com GitHub Enterprise Server. Você pode ver mais informações sobre suporte futuro planejado no Itinerário público do GitHub.

Sobre o dimensionamento automático

Você pode aumentar ou diminuir automaticamente o número de executores auto-hospedados no seu ambiente em resposta aos eventos do webhook que você recebe com uma determinada etiqueta. Por exemplo, você pode criar uma automação que adiciona um novo executor auto-hospedado cada vez que você receber um evento de webhook workflow_job com a atividade queued, que notifica você de que um novo trabalho está pronto para processamento. A carga do webhook inclui dados da etiqueta. Portanto, você pode identificar o tipo de executor que a tarefa está solicitando. Uma vez terminado o trabalho, você pode criar uma automação que remove o executor em resposta à atividade de workflow_job concluída.

GitHub recomenda e faz parcerias estreitas com dois projetos de código aberto que você pode usar para dimensionar automaticamente os seus executores. Uma ou ambas as soluções podem ser adequadas, com base nas suas necessidades.

Os repositórios a seguir possuem instruções detalhadas para configurar esses dimensionadores automáticos:

Cada solução tem certas especificações que podem ser importantes para considerar:

Funcionalidadesactions-runner-controllerterraform-aws-github-runner
Tempo de execuçãoKubernetesVMs do Linux e do Windows
Nuvens compatíveisAzure, Amazon Web Services, Google Cloud Platform, nos locaisAmazon Web Services
Onde os executores podem ser dimensionadosNíveis de empresa, organização e repositório. Por etiqueta do executor e grupo de executores.Níveis de organização e repositório. Por etiqueta do executor e grupo de executores.
Como os executores podem ser dimensionadosEventos de webhook, Programados, Baseados em extraçõesEventos de Webhook, Programados (únicamente executores a nível de organização)

Usaar executores efêmeros para dimensionamento automático

GitHub recomenda implementar o dimensionamento automático com executores auto-hospedados efêmeros. Nãose recomenda o dimensionamento automático com executores auto-hospedados persistentes. Em certos casos, GitHub não pode garantir que os trabalhos não sejam atribuídos a executores persistentes enquanto eles são desativados. Com executores efêmeros, é possível garantir iss, porque GitHub só atribui um trabalho a um executor.

Esta abordagem permite que você gerencie os seus executores como sistemas efêmeros, já que você pode usar automação para fornecer um ambiente limpo para cada trabalho. Isso ajuda a limitar a exposição de quaisquer recursos sensíveis de trabalhos anteriores e também ajuda a mitigar o risco de um executor comprometido receber novos trabalhos.

Para adicionar um executor efêmero ao seu ambiente, inclua o parâmetro --ephemeral ao registrar seu executor usando config.sh. Por exemplo:

./config.sh --url https://github.com/octo-org --token example-token --ephemeral

O serviço GitHub Actions irá cancelar o resgistro do runner automaticamente depois de ter processado um trabalho. Em seguida, você poderá criar a sua própria automação que limpa o runner depois que ele tiver seu registro cancelado.

Observação: Se um trabalho estiver etiquetado para um certo tipo de executor, mas nenhuma correspondência desse tipo estiver disponível, o trabalho não irá falhar imediatamente no momento da entrada na fila. Em vez disso, o trabalho permanecerá na fila até que o período de tempo limite de 24 horas expire.

Controlando atualizações de software dos executores em executores auto-hospedados

Por padrão, os executores auto-hospedados realizarão automaticamente uma atualização de software sempre que uma nova versão do executor estiver disponível. Se você usar executoresefêmeros em contêineres, isso pode gerar a atualizações de software repetidas quando uma nova versão do executor for lançada. A desabilitação das atualizações automáticas permite que você atualize a versão do executor na imagem do contêiner diretamente no seu próprio agendamento.

Para desabilitar a atualização automática de software e instalar atualizações, especifique o sinalizador --disableupdate quando registrar seu executor usando a configuração config.sh. Por exemplo:

./config.sh --url https://github.com/octo-org --token example-token --disableupdate

Se você desabilitar as atualizações automáticas, você ainda deverá atualizar sua versão do executor regularmente. A nova funcionalidade em GitHub Actions exige alterações no serviço de GitHub Actions service e no software do executor. O executor pode não conseguir de processar corretamente os trabalhos que aproveitam novas funcioanlidades em GitHub Actions sem a atualização de um software.

Se você desabilitar as atualizações automáticas, será necessário atualizar a versão do seu executor no prazo de 30 dias a contar da nova versão disponível. Você deverá assinar para receber as notificações de versões no repositório actions/runner repository. Para obter mais informações, consulte “Configurando notificações".

Para obter instruções sobre como instalar a versão mais recente do executor, consulte as instruções de instalação referentes à última versão.

Observação: Se você não executar uma atualização de software em 30 dias, o serviço de GitHub Actions não irá colocar trabalhos na fila para o seu executor. Além disso, se uma atualização crítica de segurança for necessária, o serviço de GitHub Actions não colocará os trabalhos na fila do seu executor até que ele seja atualizado.

Usando webhooks para dimensionamento automático

Você pode criar seu próprio ambiente de dimensionamento automático usando cargas recebidas do webhook workflow_job. Este webhook está disponível no repositório, organização e níveis corporativos e a carga deste evento contém uma chave de ação que corresponde aos estágios do ciclo de vida do trabalho de um fluxo de trabalho. Por exemplo, quando as tarefas estão queued, in_progress e completed. Você deverá criar a sua própria automação de dimensionamento em resposta a estas cargas de webhook.

Requisitos de autenticação

Você pode registrar e excluir executores auto-hospedados do repositório e organização usando a API. Para efetuar a autenticação na API, a implementação do seu dimensionamento automático pode usar um token de acesso ou um aplicativo de GitHub.

Seu token de acesso exigirá o seguinte escopo:

  • Para repositórios privados, use um token de acesso com o escopo repo.
  • Para repositórios públicos, use um token de acesso com o escopo public_repo.
  • Para as organizações, use um token de acesso com o escopo admin:org.

Para efetuar a autenticação usando um aplicativo de GitHub, este deverá ter as seguintes permissões:

  • Para repositórios, atribua a permissão de administração.
  • Para organizações, atribua a permissão organization_self_hosted_runners.

Você pode registrar e excluir executores auto-hospedados da empresa usando a API. Para efetuar a autenticação na API, sua implementação de dimensionamento automático pode usar um token de acesso.

Seu token de acesso irá exigir o escopo manage_runners:enterprise.