Project

Profile

Help

Throttle Concurrent Builds Plug-in

Purpose:
Плагин для регулирования (throttle) и группировки заданий (джобов), позволяет запускать некоторое определенное количество заданий, выполняемых одновременно в одном и том же окружении. Может использоваться для запуска заданий одновременно на разных слейвах (slave) или ожидали завершения работы другого задания для старта.

Параметры:
option (str) – проект (project - разделить только его) или категория (category - разделить проект как часть одной и более категорий)
max-per-node (int) – макс. число одновременных сборок на ноду (default 0)
max-total (int) – общее макс. число одновременных сборок (default 0)
enabled (bool) – включено ли регулирование (default true)
categories (list) – многопроектные категории
matrix-builds (bool) – регулирование сборок мастер матриц (default true)
matrix-configs (bool) – регулирование сборок конфигов матриц (default false)

Категории:
- используются для регулирования нескольких проектов (заданий).
- могут быть дополнительно настроены с парами регулируемых Jenkins node-label. Каждую пару можно применить только для узлов(nodes), с которыми соотносятся ярлыки (labels). Это достигается добавлением Maximum Per Labeled Node пар в любую категорию.

max-per-node категорий заменяются максимумом пары.

Prevent multiple jobs with identical parameters from running concurrently
При включенном параметре - запускается только один образец джоба с идентичными параметрами. Остальные джобы с разными параметрами запускаются одновременно.
Можно указать (через запятую) список параметров, которые будут использоваться при сравнении заданий. Если пусто, все параметры должны совпадать, чтобы задание ограничивалось одним запущенным экземпляром.

'0' подразумевает "не ограничено", если иное не задано.
Можно поставить ограничения на джобу или на категорию.

Конфигурация категорий:
#todo

Check:
1. в плагине баг и matrix job с ним работает только через категории - в
общих настройках Дженкинса создаешь категории, для каждой категории
определяешь Maximum Total Concurrent Builds и Maximum Concurrent Builds
Per Node, а в определении джоба - ссылка на категорию:

- throttle:
matrix-configs: true
option: category
categories:
- cat1
enabled: true

2. сработало только с jjb 1.6
Кстати, документация тут
http://docs.openstack.org/infra/jenkins-job-builder/properties.html
относиться к Jenkins Job Builder 2.0.0.0b2.dev21
Предлагаю потестить и переползти на 2.0

3. ситуация с build_all

сделал так:

- throttle:
matrix-configs: true
matrix-builds: false
option: category
categories:
- cat1
enabled: true

и

concurrent: false

категория cat1 определена так:
Maximum Total Concurrent Builds 25
Maximum Concurrent Builds Per Node 5

Введено руками в общих настройках дженкинс

В результате запустилось 1 build_all, 4 build_al >> <distro_name>, 4
build. Думаю это снизит вероятность пробок.

не получилось так, чтоб можно было запускать два build_all на разных
нодах - concurrent: false так как иначе можно запустить второй build_all
на той же ноде.

Думаю это можно решить враппером, который будет просто запускать
build_all и сам не являться matrix job. Для таких не надо категории,
просто можно написать

- throttle:
option: project
max-per-node: 1
max-total: 5
enabled: true

4. Необходимо создавать руками категорию. Либо надо автоматизировать,
либо избавляться от matrix jobs

5. https://github.com/mariadb-corporation/maxscale-jenkins-jobs/pull/131