Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Настройка кэша репозитория

Вы можете настроить кэш репозитория для GitHub Enterprise Server, создав новый экземпляр, подключив кэш репозитория к основному экземпляру и настроив репликацию сетей репозитория в кэш репозитория.

Примечание. Кэширование репозитория в настоящее время доступно в бета-версии и может быть изменено.

Сведения о конфигурации для кэширования репозитория

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

Кэширование репозитория не поддерживается при кластеризации.

DNS для кэшей репозитория

Основной экземпляр и кэш репозитория должны иметь разные DNS-имена. Например, если основной экземпляр находится в github.example.com, вы можете присвоить кэшу имя europe-ci.github.example.com или github.asia.example.com.

Чтобы компьютеры CI извлекали данные из кэша репозитория вместо основного экземпляра, можно использовать параметр конфигурации Git url.<base>.insteadOf. Дополнительные сведения см. в разделе git-config документации.

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

[url "https://europe-ci.github.example.com/"]
    insteadOf = https://github.example.com/

Затем, когда ему будет предложено получить https://github.example.com/myorg/myrepo, Git вместо этого будет извлекать данные из https://europe-ci.github.example.com/myorg/myrepo.

Настройка кэша репозитория

  1. Настройте новый экземпляр GitHub Enterprise Server на нужной платформе. Этот экземпляр будет кэшем репозитория. Дополнительные сведения см. в разделе Настройка экземпляра GitHub Enterprise Server.

  2. Задайте такой же пароль администратора, как на основном устройстве, и продолжайте процедуру.

  3. Щелкните Настроить как реплику. Варианты установки со ссылкой для настройки нового экземпляра в качестве реплики

  4. В разделе "Добавление нового ключа SSH" введите ключ SSH. Добавление ключа SSH

  5. Нажмите Добавить ключ.

  6. Подключитесь к IP-адресу кэша репозитория с помощью SSH.

    $ ssh -p 122 admin@REPLICA-IP
    7. Чтобы создать пару ключей для репликации, используйте команду `ghe-repl-setup` с IP-адресом основного устройства и скопируйте возвращенный ею открытый ключ.
    $ ghe-repl-setup PRIMARY_IP
    1. Чтобы добавить открытый ключ в список авторизованных ключей на основном устройстве, перейдите к `https://PRIMARY-HOSTNAME/setup/settings` и добавьте в список ключ, скопированный из реплики.
  7. Чтобы проверить подключение к основному устройству и включить режим реплики для кэша репозитория, выполните ghe-repl-setup еще раз.

    $ ghe-repl-setup PRIMARY-IP
  8. Задайте cache-location для кэша репозитория, заменив CACHE-LOCATION буквенно-цифровым идентификатором, например регионом, в котором развернут кэш. Также задайте имя центра обработки данных для этого кэша; новые кэши будут пытаться присвоить начальное значение из другого кэша в том же центре обработки данных.

    $ ghe-repl-node --cache CACHE-LOCATION --datacenter REPLICA-DC-NAME
  9. Чтобы начать репликацию хранилищ данных, используйте команду ghe-repl-start.

    $ ghe-repl-start

    Предупреждение. ghe-repl-start вызывает кратковременный сбой на главном сервере, во время которого пользователи могут видеть внутренние ошибки сервера. Чтобы предоставить более точное сообщение, запустите ghe-maintenance -s на первичном узле перед запуском ghe-repl-start на узле-реплике, чтобы поместить устройство в режим обслуживания. После начала репликации отключите режим обслуживания с помощью ghe-maintenance -u. Репликация Git не будет выполняться, пока основной узел находится в режиме обслуживания.

    11. Чтобы проверить состояние каждого канала репликации хранилища данных, используйте команду `ghe-repl-status`.
    $ ghe-repl-status
  10. Чтобы включить репликацию сетей репозитория в кэш репозитория, задайте политику расположения данных. Дополнительные сведения см. в разделе Политики расположения данных.

Политики расположения данных

Вы можете управлять расположением данных, настроив политики расположения данных для репозиториев с помощью команды spokesctl cache-policy. Политики расположения данных определяют, какие сети репозитория реплицируются в кэши репозитория. По умолчанию сети репозитория не будут реплицироваться в кэши репозитория, пока не будет настроена политика расположения данных.

Политики расположения данных влияют только на содержимое Git. Содержимое в базе данных, например проблемы и комментарии к запросу на вытягивание, будет реплицировано на все узлы независимо от политики.

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

Политику можно настроить для репликации всех сетей с флагом --default. Например, эта команда создаст политику для репликации одной копии каждой сети репозитория в набор кэшей репозитория, который имеет cache_location «kansas».

$ ghe-spokesctl cache-policy set --default 1 kansas

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

$ ghe-spokesctl cache-policy set <owner/repository> 1 kansas

Вы можете переопределить политику, которая реплицирует все сети и исключить определенные сети, указав для сети число реплик, равное нулю. Например, эта команда указывает, что любой кэш репозитория в расположении «kansas» не может содержать копии этой сети.

$ ghe-spokesctl cache-policy set <owner/repository> 0 kansas

Счетчики реплик со значением больше 1 в заданном расположении кэша не поддерживаются.