#jenkins #gerrit
#Дженкинс #gerrit
Вопрос:
В настоящее время мы запускаем gerrit 2.7 в настройке master / slave, то есть мастер настроен на репликацию репозиториев на подчиненный gerrit без включенного пользовательского интерфейса.
Идея заключается в том, что Дженкинс может извлекать данные из подчиненных устройств и не добавлять нагрузку на пользовательский интерфейс, обслуживающий master.
Проблема, с которой я столкнулся, заключалась в том, что запускалось использование плагина gerrit в Jenkins для запуска проверок, и если он будет извлечен из подчиненного устройства, ссылки еще не будут реплицированы, и проверка завершится неудачей.
Очевидно, что если Дженкинс откажется от «мастера», никаких проблем, но это сведет на нет цель…
Мне было интересно, знает ли кто-нибудь, могу ли я указать плагин Jenkins gerrit на подчиненный gerrit и работает ли это. Также открыт для любых других идей…
Ответ №1:
Попробуйте установить remote.<name>.replicationDelay
replication.config
значение 0
. Это должно устранить задержку по умолчанию, вызывающую ваши проблемы.
В качестве альтернативы вам следует рассмотреть возможность использования вашего подчиненного репозитория в качестве ссылки (при условии, что подчиненное устройство репликации находится на той же физической машине, что и ваше подчиненное устройство jenkins / jenkins), но все равно извлекается из главного. Таким образом, управление по-прежнему будет принадлежать вашему ведущему gerrit (что приведет к небольшой нагрузке), но основная часть передачи данных будет приходиться на задание репликации.
Что еще лучше, большую часть времени вашим заданиям jenkins вообще не нужно будет ничего извлекать, потому что объекты уже есть. Это сокращает время сборки, а также необходимое пространство для ваших заданий.
Даже если ваша репликация отставала, таким образом, вы ничего не потеряете, потому что в этом особом случае отсутствующие объекты будут просто получены от master вместо этого.
Комментарии:
1. Мне нравится идея использования привязки gerrit к ссылочному репозиторию подчиненного устройства сборки. Это может решить множество проблем, за исключением того, что я немного беспокоюсь о нагрузке на сеть — у нас более 100 подчиненных устройств сборки.
2. В этом случае рассмотрите возможность размещения ваших ссылочных репозиториев в общих ресурсах nfs (или cif, когда в Windows). У меня была аналогичная настройка в более раннем проекте с примерно 20 подчиненными устройствами. Я не вижу причин, по которым он не должен работать со 100.
3. Еще один полезный момент: плагин Gerrit Trigger 2.12 (в настоящее время находится в бета-версии) содержит функцию, позволяющую блокировать сборку до завершения репликации gerrit ( github.com/jenkinsci/gerrit-trigger-plugin/commit /… )