Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы, возможно, еще выполняется. Актуальные сведения см. в документации на английском языке.

Поддержка этой версии GitHub Enterprise была прекращена 2023-03-15. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, укрепления безопасности и новых функций установите последнюю версию GitHub Enterprise. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

По умолчанию средства выполнения тестов, размещенные в GitHub, имеют доступ к общедоступному Интернету.

Однако эти средства выполнения тестов также могут получить доступ к ресурсам в частной сети, например к реестру пакетов, диспетчеру секретов или другим локальным службам.

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

Существует несколько различных подходов, которые можно использовать для настройки этого доступа, каждый из которых имеет различные преимущества и недостатки.

  • Создание наложения сети с помощью WireGuard

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

Чтобы подключиться к WireGuard, работающей в частной службе, потребуется известные IP-адрес и порт, на которые может ссылаться рабочий процесс: это может быть общедоступные IP-адрес и порт, сопоставление портов в сетевом шлюзе или служба, которая динамически обновляет DNS.

В WireGuard отсутствует встроенная функция обработки обхода NAT, поэтому вам потребуется определить способ предоставления этой службы.

Это подключение "один к одному", поэтому, если требуется высокий уровень доступности или высокая пропускная способность, необходимо создать это на основе WireGuard.

  • Вам потребуется создать и безопасно хранить ключи для средства выполнения тестов и частной службы.
  • WireGuard использует UDP, поэтому ваша сеть должна поддерживать трафик UDP.
  • Однако имеются и преимущества, например, вы можете запустить WireGuard на существующем сервере, поэтому вам не нужна отдельная инфраструктура, и она хорошо поддерживается средствами выполнения тестов, размещенными в GitHub.
  • Пример. Настройка WireGuard В этом примере рабочий процесс настраивает WireGuard для подключения к частной службе.

В этом примере экземпляр WireGuard, запущенный в частной сети, имеет следующую конфигурацию:

IP-адрес сети наложения 192.168.1.1

Общедоступный IP-адрес и порт 1.2.3.4:56789

Открытый ключ examplepubkey1234...

  • Экземпляр WireGuard в средстве выполнения тестов GitHub Actions имеет следующую конфигурацию:
  • IP-адрес сети наложения 192.168.1.2
  • Закрытые ключи хранятся в виде секретаGitHub Actions в WIREGUARD_PRIVATE_KEY

Дополнительные сведения см. в разделе Краткое руководство по WireGuard, а также в разделе "Зашифрованные секреты", чтобы узнать, как безопасно хранить ключи.

  • Использование Tailscale для создания наложения сети
  • Tailscale — это коммерческий продукт на базе WireGuard.
name: WireGuard example

on:
  workflow_dispatch:

jobs:
  wireguard_example:
    runs-on: ubuntu-latest
    steps:
      - run: sudo apt install wireguard

      - run: echo "$" > privatekey

      - run: sudo ip link add dev wg0 type wireguard

      - run: sudo ip address add dev wg0 192.168.1.2 peer 192.168.1.1

      - run: sudo wg set wg0 listen-port 48123 private-key privatekey peer examplepubkey1234... allowed-ips 0.0.0.0/0 endpoint 1.2.3.4:56789

      - run: sudo ip link set up dev wg0

      - run: curl -vvv http://192.168.1.1

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

Его недостатки аналогичны WireGuard: подключение "один к одному", поэтому может потребоваться дополнительная работа для обеспечения высокой доступности или высокой пропускной способности.

Вам по-прежнему придется создавать ключи и безопасно хранить их. Протокол по-прежнему UDP, поэтому ваша сеть должна поддерживать трафик UDP.

Тем не менее, есть некоторые преимущества по сравнению с WireGuard: функция обхода NAT является встроенной, поэтому вам не нужно предоставлять порт для подключения к общедоступному Интернету. На сегодняшний день это самый быстрый из обсуждаемых вариантов, поскольку Tailscale предоставляет рабочий процесс GitHub Actions с одним шагом для подключения к сети наложения. Дополнительные сведения о безопасном хранении ключей см. в разделе Tailscale GitHub Action, а также в разделе Зашифрованные секреты.

However, there are some advantages over WireGuard: NAT traversal is built-in, so you don't need to expose a port to the public internet. It is by far the quickest of these options to get up and running, since Tailscale provides an GitHub Actions workflow with a single step to connect to the overlay network.

For more information, see the Tailscale GitHub Action, as well as "Зашифрованные секреты" for how to securely store keys.