Skip to main content

Usando servidores proxy com um runner

Você pode configurar runners em ambientes isolados para usar um servidor proxy para comunicação segura com GitHub.

Configurando um proxy para executores do Linux e do Windows

Se o executor precisar se comunicar por meio de um servidor proxy, você poderá definir configurações de proxy usando variáveis de ambiente ou configurações no nível do sistema.

VariableDescriptionExample
https_proxyURL de proxy para tráfego HTTPS. Você pode incluir a autenticação básica, se necessário.http://proxy.local
http://192.168.1.1:8080
http://username:password@proxy.local
http_proxyURL de proxy para tráfego HTTP. Você pode incluir a autenticação básica, se necessário.http://proxy.local
http://192.168.1.1:8080
http://username:password@proxy.local
no_proxyUma lista separada por vírgulas de hosts ou endereços IP que devem ignorar o proxy. Alguns clientes só respeitam endereços IP quando as conexões são feitas diretamente com o IP em vez de um nome de host.example.com
example.com,myserver.local:443,example.org

As variáveis de ambiente de proxy são lidas quando o aplicativo executor é iniciado, portanto, você deve definir as variáveis de ambiente antes de configurar ou iniciar o aplicativo executor. Se a configuração do proxy for alterada, você deverá reiniciar o aplicativo executor.

Em computadores Windows, os nomes das variáveis de ambiente proxy não diferenciam maiúsculas de minúsculas. Nos sistemas Linux e macOS, recomendamos que você use variáveis de ambiente em minúscula. Caso tenha uma variável de ambiente em letras minúsculas e maiúsculas no Linux ou macOS (por exemplo, https_proxy e HTTPS_PROXY), o aplicativo executor auto-hospedado usará a variável de ambiente em minúsculas.

A conexão entre executores auto-hospedados e o GitHub ocorre por HTTPS (porta 443).

Configurações de exemplo

Observação

Para evitar problemas, é uma boa prática tratar as variáveis de ambiente como com diferenciação de maiúsculas e minúsculas, independentemente do comportamento do sistema operacional e do shell que você está usando.

Linux e macOS

Defina variáveis de ambiente de proxy para o executor.

Shell
export https_proxy=http://proxy.local:8080
export http_proxy=http://proxy.local:8080
export no_proxy=example.com,localhost,127.0.0.1

Windows

No Windows, você pode definir configurações de proxy definindo variáveis de ambiente ou usando o comando netsh. A abordagem netsh se aplica a aplicativos e serviços que dependem da API WinHTTP.

A definição de variáveis de ambiente ainda é necessária para corredores que usam rede privada. Se você também precisa configurar o netsh depende dos aplicativos usados em seus fluxos de trabalho.

Shell
netsh winhttp set advproxy setting-scope=machine settings={\"Proxy\":\"proxy.local:8080\",\"ProxyBypass\":\"168.63.129.16;169.254.169.254\",\"AutoconfigUrl\":\"\",\"AutoDetect\":false} 

Ao configurar isso durante a geração de imagem personalizada, use setting-scope=machine para garantir que as configurações de proxy persistam após reinicializações e durante a geração de imagens de VM.

Tornando as configurações de proxy persistentes

Ao definir essas variáveis de ambiente durante a geração de imagem personalizada, verifique se a configuração persiste entre reinicializações ou recompilações de imagem.

Linux e macOS

Escreva as variáveis em /etc/environment.

 echo 'http_proxy=http://proxy.local' >> /etc/environment

Windows

Defina as variáveis de ambiente em todo o sistema.

Shell
[Environment]::SetEnvironmentVariable("http_proxy", "http://proxy.local", "Machine")

Configurando um proxy para executores do Azure

Se o executor estiver hospedado no Azure, seja como um executor auto-hospedado ou um executor maior hospedado no GitHub implantado com rede privada, talvez seja necessário configurar um proxy para permitir a conectividade de saída com os serviços do GitHub, mantendo o isolamento de rede.

Você deve adicionar os IPs de gerenciamento e metadados do Azure à sua no_proxy lista para garantir que o executor possa acessar os serviços necessários do Azure. Esses pontos de extremidade permitem que as VMs do Azure recuperem as informações de configuração e identidade necessárias para a operação adequada.

Os dois IPs do Azure são:

Usar um arquivo .env para definir a configuração de proxy

Observação

O uso de um .env arquivo para definir a configuração de proxy não pode ser feito em um executor hospedado pelo GitHub.

Em executores auto-hospedados, você pode definir as configurações de proxy adicionando as variáveis a um .env arquivo no diretório do aplicativo executor auto-hospedado (o diretório em que você baixou e desempacotou o software executor). Essa abordagem é útil quando o runner é configurado para operar como um serviço em uma conta de sistema. Quando o runner inicia, ele lê as variáveis definidas em .env para a configuração do proxy.

Exemplo de proxy reverso .env

Shell
https_proxy=http://proxy.local:8080
no_proxy=example.com,myserver.local:443

Definir configuração de proxy para contêineres Docker

Se você usar ações do contêiner Dock ou contêineres de serviço nos seus fluxos de trabalho, você também deverá configurar o Docker para usar o seu servidor proxy além de definir as variáveis do ambiente acima.

Para obter informações sobre a configuração necessária do Docker, confira Configurar o Docker para usar um servidor proxy na documentação do Docker.