# Использование прокси-серверов с раннером

Вы можете настроить раннеры в изолированных условиях так, чтобы использовать прокси-сервер для безопасной связи с GitHub.

> \[!NOTE]
> GitHub Enterprise Serverразмещенные в данный момент средства выполнения не поддерживаются в GitHub.

## Настройка прокси для средств запуска Linux и Windows

Если средству выполнения тестов необходимо взаимодействовать через прокси-сервер, вы можете настроить параметры прокси-сервера с помощью переменных среды или конфигураций системного уровня.

| Variable      | Description                                                                                                                                                                                                                | Example                                                                                     |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `https_proxy` | URL прокси для трафика HTTPS. При необходимости вы можете включить базовую аутентификацию.                                                                                                                                 | `http://proxy.local`<br>`http://192.168.1.1:8080`<br>`http://username:password@proxy.local` |
| `http_proxy`  | URL прокси для HTTP-трафика. При необходимости вы можете включить базовую аутентификацию.                                                                                                                                  | `http://proxy.local`<br>`http://192.168.1.1:8080`<br>`http://username:password@proxy.local` |
| `no_proxy`    | Разделенный запятыми список хостов или IP-адресов, которые должны обходить прокси. Некоторые клиенты учитывают IP-адреса только тогда, когда соединения устанавливаются непосредственно с IP-адресом, а не с именем хоста. | `example.com`<br>`example.com,myserver.local:443,example.org`                               |

Переменные среды прокси считываются при запуске приложения средства выполнения, поэтому необходимо задать переменные среды перед настройкой или запуском приложения средства выполнения. Если конфигурация прокси-сервера изменится, необходимо перезапустить приложение средства выполнения.

На компьютерах с Windows имена переменных среды прокси не чувствительны к регистру. На компьютерах с Linux и macOS рекомендуется использовать только строчные символы в переменных среды. Если у вас есть переменная среды в нижнем и верхнем регистре в Linux или macOS, например `https_proxy` и `HTTPS_PROXY`, локальное приложение Runner использует переменную среды в нижнем регистре.

Подключение между локальными запусками и GitHub через HTTP (порт 80) или HTTPS (порт 443).
Чтобы обеспечить подключение по протоколу HTTPS, настройте TLS для GitHub Enterprise Server. Для получения дополнительной информации см. [Настройка TLS](/ru/enterprise-server@3.22/admin/configuring-settings/hardening-security-for-your-enterprise/configuring-tls).

> \[!WARNING]
> Самостоятельные раннеры не поддерживают использование IP-адресов и диапазонов CIDR в `no_proxy` переменной среды. Если ваш GitHub Enterprise Server экземпляр использует IP-адрес и вы настроите `no_proxy` обход прокси для этого адреса, раннер всё равно не сможет подключиться.
> Если к вашему GitHub Enterprise Server экземпляру обращается с IP-адреса, и соединение должно обойти прокси, раннер не сможет подключиться, даже если этот IP-адрес указан в `no_proxy`.

### Примеры конфигураций

> \[!NOTE]
> Чтобы избежать проблем, рекомендуется рассматривать переменные среды как конфиденциальные регистры независимо от поведения операционной системы и используемой оболочки.

#### Linux и macOS

Установите переменные среды прокси для средства выполнения.

```shell copy
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 вы можете настроить параметры прокси либо путем установки переменных среды, либо с помощью [команды netsh](https://learn.microsoft.com/en-us/windows/win32/winhttp/netsh-exe-commands#set-advproxy).
Подход netsh применяется к приложениям и службам, использующим API WinHTTP.

Настройка переменных среды по-прежнему требуется для средств выполнения, использующих частную сеть. Нужно ли вам также настраивать netsh, зависит от приложений, используемых в ваших рабочих процессах.

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

При настройке этого параметра во время создания пользовательского образа используйте его `setting-scope=machine` , чтобы параметры прокси-сервера сохранялись после перезагрузки и во время создания образа виртуальной машины.

### Сохранение настроек прокси

При настройке этих переменных среды во время создания пользовательского образа убедитесь, что конфигурация сохраняется при перезагрузке или перестроении образа.

#### Linux и macOS

Запишите переменные в `/etc/environment`.

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

#### Виндоус

Задайте общесистемные переменные среды.

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

## Настройка прокси-сервера для средств выполнения Azure

Если средство выполнения тестов размещено в Azure в качестве локального средства выполнения тестов или более крупного средства выполнения, размещенного в GitHub и развернутого с использованием частной сети, вам может потребоваться настроить прокси-сервер, чтобы разрешить исходящее подключение к службам GitHub при сохранении сетевой изоляции.

В список следует добавить метаданные Azure и IP-адреса `no_proxy` управления, чтобы средство выполнения тестов могло получить доступ к необходимым службам Azure. Эти конечные точки позволяют виртуальным машинам Azure получать сведения о конфигурации и удостоверениях, необходимые для правильной работы.

Вот два IP-адреса Azure:

* 168.63.129.16 (см. [общие сведения об IP-адресе Azure 168.63.129.16](https://learn.microsoft.com/en-us/azure/virtual-network/what-is-ip-address-168-63-129-16?tabs=linux))
* 169.254.169.254 (см. [раздел Служба метаданных экземпляров Azure](https://learn.microsoft.com/en-us/azure/virtual-machines/instance-metadata-service?tabs=linux))

## Использование файла .env для настройки конфигурации прокси-сервера

> \[!NOTE]
> Использование `.env` файла для настройки конфигурации прокси-сервера не может быть выполнено в средстве выполнения, размещенном в GitHub.

В локальных средствах выполнения тестов вы можете настроить параметры прокси-сервера, добавив переменные в `.env` файл в каталоге приложения локального средства выполнения тестов (каталоге, в котором вы скачали и распаковали программное обеспечение средства выполнения). Этот подход полезен, когда средство выполнения тестов настроено для запуска в качестве службы под системной учетной записью. Когда средство выполнения запускается, оно считывает переменные, заданные `.env` для конфигурации прокси.

### Пример `.env` конфигурации прокси-сервера

```shell copy
https_proxy=http://proxy.local:8080
no_proxy=example.com,myserver.local:443
```

## Настройка конфигурации прокси-сервера для контейнеров Docker

Если в рабочих процессах используются действия контейнера Docker или контейнеры служб, возможно, потребуется настроить Docker для применения прокси-сервера в дополнение к настройке вышеуказанных переменных среды.

Сведения о требуемой конфигурации Docker см. в разделе ["Настройка Docker" для использования прокси-сервера](https://docs.docker.com/network/proxy/) в документации По Docker.