Jenkins - одновременное выполнение экземпляров одной сборки
Я хотел бы иметь возможность запускать несколько сборок одной и той же работы Дженкинса одновременно.
Пример:
- Build [* jenkins_job_1 *]: вызывает ant script с параметром 'A'
- Build [* jenkins_job_1 *]: вызывает ant script с параметром 'B'
- повторить при необходимости
- каждый экземпляр задания запускается одновременно, а не через очередь.
Причина, по которой я хотел бы сделать это, - это не создавать несколько одинаковых рабочих заданий, все из которых необходимо поддерживать.
Есть ли способ сделать это или, может быть, другое решение (т.е. динамически создать задание из базового задания и удалить его после его завершения)?
Ответы
Ответ 1
У Jenkins есть флажок: "Выполнять параллельные сборки при необходимости"
Если вы проверите это, тогда он запустит несколько сборок для задания.
Это работает с флажком "Эта сборка параметризирована".
Вы по-прежнему запускаете сборки, передавая параметры A
или B
в качестве параметров. Вы можете использовать другое задание для их запуска, или вы можете сделать это вручную с помощью script.
Ответ 2
При создании задания вы можете выбрать Построить проект с несколькими конфигурациями (Matrix build). Затем в конфигурации задания вы можете определить Матрица конфигурации, которая позволяет указать один или несколько параметров (осей) для разных сборок. Что касается одновременной работы, вы должны иметь возможность запускать столько одновременных сборок, сколько у вас есть исполнители (с соответствующей меткой).
К сожалению, в Jenkins wiki отсутствует документация об этой настройке. Есть пара предыдущих SO-вопросов, здесь и здесь, которые могут дать небольшое руководство. Был добавлен "недавний" пост в блоге о настройке задания с несколькими конфигурациями для выполнения сборок на разных платформах.
Ответ 3
Более новым (и лучшим) решением является Jenkins Job DSL Plugin.
Мы использовали его с большим успехом. Наши конфигурации заданий теперь доступны... мы можем создать огромный стек сложных заданий из некоторых файлов groovy и пару заданий шаблона. Это здорово.
Мне нравится это намного больше, чем матричные сборки, которые были сложными и сложными для понимания.
Ответ 4
Вы можете создать сборку и настроить ее с помощью параметров. Установите флажок This build is parameterized
и добавьте нужные параметры в конфигурацию сборки. Затем вы можете запускать одновременные сборки с использованием разных параметров.
Боковое примечание: "Массовый Builder" в Jenkins может подтолкнуть его в очередь, но также есть флажок This bulk build is parameterized
.