Несколько очередей сборки в Jenkins - PullRequest
6 голосов
/ 04 января 2012

У меня есть несколько различных заданий в Jenkins, разделенных на проекты со своими собственными «конвейерами» сборки / тестирования / анализа. Большинство этих заданий на самом деле являются удаленными командами, а не встроенными сборками.

Однако Jenkins из коробки поддерживает только одну очередь для всех сборок. Я хочу определить одну очередь для проекта (или просмотра).

Как бы мне этого добиться?

Ответы [ 6 ]

4 голосов
/ 04 января 2012

Насколько я знаю, это невозможно без изменения кода Дженкинса, но я думаю, что вы могли бы достичь той же цели с минимальным обслуживанием, используя сборку ведомых. Разные сборки могут работать одновременно на подчиненных илидаже на одном и том же ведомом устройстве, если вы задаете несколько исполнителей (если на подчиненном компьютере> 1 ЦП).Вы можете пометить подчиненные, чтобы контролировать, какие задания выполняются на каждом из них, чтобы у вас мог быть отдельный набор подчиненных для каждого из ваших конвейеров.

Помимо накладных расходов на обеспечение работы основных подчиненных машин,специфические издержки Дженкинса для работы раба минимальны.Вы можете использовать процесс на главном сервере, чтобы сохранить подчиненный JAR-файл и необходимые инструменты сборки;в моем магазине мы используем простой скрипт rsync, который запускается каждый раз, когда ведущий или ведомый перезапускается, чтобы скопировать последние инструменты с ведущего устройства на ведомый и перезапустить подчиненный процесс.

Этот подход также уменьшает степень, до котороймастер Дженкинс - это единственная точка отказа.

0 голосов
/ 16 января 2017

Я думаю, что Плагин блокирования сборки - это то, что вы ищете.

Github Build Blocker Plugin

Информация о плагине для блокировщика сборки Jenkins

Этот плагин можно установить через Управление плагинами в Jenkins.

0 голосов
/ 16 января 2017

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

Есть плагин под названием Throttle Concurrent Builds . Он позволяет устанавливать уровень параллелизма сборки как для отдельных заданий, так и для разных заданий.

Документация была немного расплывчатой, поэтому вот шаги, которые работали для меня:

  1. После установки плагина перейдите на Управление Jenkins -> Настройка системы .
  2. В разделе Параллельные сборки Throttle задайте группы заданий и их соответствующие уровни параллелизма.
  3. Теперь для каждого задания, которое вы хотите регулировать, перейдите к его конфигурации, включите Параллельные сборки Throttle ( General section), выберите Регулируйте этот проект как часть больше категорий и назначьте одну или несколько категорий, определенных на предыдущем шаге (нет необходимости устанавливать ограничения здесь снова).
0 голосов
/ 27 июля 2016

Я согласен с @sti. Рассмотрим несколько проектов, если это все еще необходимо. Также рассмотрим https://wiki.jenkins -ci.org / display / JENKINS / Gearman + Плагин , чтобы объединить их в группы, чтобы они были бесшовными.

0 голосов
/ 21 марта 2015

Я знаю, что эта ветка старая, но я все равно прокомментировал.

IMO

Я бы использовал одного Мастера и несколько рабов. Но управлять требованиями к конфигурации инструмента с помощью инструмента управления конфигурацией или CMT (Chef, Puppet, Ansible и т. Д.). Я бы блокировал конвейеры для определенных ведомых сборок с помощью тегов для конкретных требований (Windows, Linux, Mac, Visualstudio, Maven, Android-SDK и т. д.). Поскольку ведомые устройства настроены в вашем cmt, вы можете очень просто раскрутить новую машину, независимо от того, является ли она виртуальной машиной или физическим оборудованием. Один мастер Дженкинс может обслуживать более 200 рабов.

0 голосов
/ 14 апреля 2012

То, что вы хотите, может быть достигнуто только путем запуска отдельного мастера Jenkins для каждого проекта.

Обычно люди думают, что у мастера Jenkins больше административных издержек, чем у ведомого, но если это вам не подходит, вы можете запустить несколько мастеров на сервере, просто назначив им разные порты.

Если это нехорошо для вас, то, возможно, Дженкинс не подходит вам. Это не единственный CI-сервер. Jenkins очень прост в настройке, но, с другой стороны, невозможно выполнить глубокую настройку, например множественные очереди сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...