Как запускать идентичные задания с разными параметрами при параллельном выполнении?
У меня есть задание сборки и параметры тестового задания.
Я хочу быть после задания сборки, одновременно запускать тестовое задание с одним параметром и тем же тестовым заданием с разными параметрами при параллельном выполнении.
build job
|
/ \
test job test job
with one params with other params
| |
Как это сделать и можно ли выполнить без необходимости писать свой собственный плагин?
Спасибо!
Ответы
Ответ 1
Когда вы создаете тестовое задание, создайте его как "Build multi-configuration project",
При настройке задания выберите "Матрица конфигурации", затем "Пользовательская ось"
Вы можете использовать имя этой оси в качестве параметра в своей работе. заданные параметры будут запускаться одновременно на разных заданиях. (если доступно достаточно исполнителей)
Ответ 2
Играя с @Soo Wei Tan, я нашел следующие работы хорошо.
- Параметрированный плагин триггеров
- Выберите "Параметр Factory"
- Выберите "Для каждого файла свойств вызовите одну сборку"
Затем в оболочке напишите ряд файлов свойств, а Trigger Plugin позаботится об остальном.
Вы можете комбинировать это с заданием матричного стиля на верхнем уровне интересными способами. Например, запуск по пользовательской оси, отслеживание всего этого с помощью сетки. Действительно довольно гибкий подход, если бит скрыт.
Ответ 3
Предполагая, что вы знаете параметры, когда вы заканчиваете работу по сборке, вы можете использовать плагин Parameterized Trigger Build для запуска обоих последующих задач с разными параметры.
Ответ 4
У меня было такое же требование, и я обнаружил, что Parameterized Trigger Plugin не был достаточно гибким для передачи различных параметров разные (или одинаковые) задания параллельно. Да, вы можете использовать параметр Factory с файлами свойств, но это означало бы добавление новых файлов свойств в мой контроль версий исключительно с целью настройки Jenkins. Проект Multi-Configuration с матрицей конфигурации также казался сложным.
Лучшее и более простое решение для меня было Multijob Plugin, в котором есть концепция фаз. MultiJob может иметь несколько фаз. Фазы запускаются последовательно, и задания в пределах фазы будут выполняться параллельно (параллельно).
После установки плагина MultiJob при создании нового элемента Jenkins выберите Проект MultiJob. Затем вы можете создать одну или несколько фаз.
Каждое задание в фазе имеет собственные параметры, нажмите Дополнительно... → Добавить параметры
Также очень легко настроить, что должно произойти, если какое-то конкретное задание терпит неудачу, если весь MultiJob продолжит или завершится неудачно и т.д., см. Убить фазу: и Состояние продолжения следующего фаза
когда статусы заданий:.
Для меня это было гораздо более интуитивно понятным для использования, чем плагин Parameterized Trigger или проект Mult-Configuration, и не требовал дополнительной настройки за пределами Jenkins.
Ответ 5
Один из вариантов - использовать плагин Build Flow (https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin) вместе с плагином Job DSL (https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL+Plugin). Вы можете использовать Job DSL для определения шагов задания, которые вызывают сборку с различными аргументами командной строки и организуют сборку с помощью Build Flow.
Ответ 6
У меня несколько другой вариант использования. У нас есть тестовые задания, которые работают против нашей основной сборки в течение цикла разработки. К концу цикла; мы создаем сборку релиз-кандидата и запускаем те же тесты против этого. Мы также хотим продолжить тестирование основной сборки.
Main Build Release Build
\ /
|
same set of tests
Я могу создать повторяющиеся задания с разными именами, чтобы справиться с этим. Но должен быть более элегантный/более простой способ.
Ответ 7
Не могли бы вы сказать немного больше, почему вам нужно, чтобы ваши тестовые задания выполнялись одновременно?
Я использую тест, который нужно разделить и запустить одновременно, но я использую одно задание Дженкинса/Хадсона, у которого есть веs > 1 (см. Тяжелый плагин работы).