Дросселирование клонов общей библиотеки Дженкинса на мастере

pixman20 спросил: 14 ноября 2017 в 06:55 в: jenkins

Я не уверен, суммировал ли я это хорошо в заголовке, поэтому предложения приветствуются.

Конфигурация Jenkins:

  • A Дженкинс Линукс Мастер с 0 исполнителями.
  • Множество разных агентов / исполнителей агентов.
  • Множество декларативных конвейерных заданий с преимущественно сценариями.
  • Декларативный конвейер указывает agent { label "some-label" }
  • Многие доверенные разделяемые библиотеки (настроенные в основной конфигурации Jenkins) загружаются с использованием git в качестве VCS.
  • Большинство перечисленных выше разделяемых библиотек намеренно загружаются не явно, а явно.

Предположение: Когда разделяемые библиотеки загружаются неявно, они всегда клонируются на ведущем устройстве, а сценарии загружаются в память до выполнения действительного кода конвейера.

Проблема: Для каждого работающего конвейера клонируется на мастер ведущее число доверенных общих библиотек, прежде чем любой код конвейера может быть сериализован и запущен на агенте. Помните, что вы можете сказать Дженкинсу, что одновременно запускаете только несколько клонов на мастере. Конечный результат заключается в том, что при одновременном запуске большого числа конвейеров число клонов git, запущенных на главном сервере, является значительным, что приводит к перегрузке либо сервера Jenkins, либо сервера git и вызывает сбой сборок (либо из-за тайм-аута или другой связанной причины).

Обходной путь (в некотором роде) Загружает как можно меньше доверенных разделяемых библиотек, а затем загружает их явно, в то время как находится в lock ... { } из плагина Lockable Resources для регулирования количества клонов git. Однако это не решает проблему, поскольку есть конкретные причины, по которым вам нужно использовать неявную загрузку вместо явной.

Надеюсь, я пропустить что-то очевидное:)


0 ответов