Как запустить одинаковые задания с разными параметрами в параллельном исполнении? - PullRequest
21 голосов
/ 11 апреля 2011

У меня есть задание на сборку и параметры тестового задания.

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

                build job  
                   |  
                  / \  
         test job    test job
   with one params    with other params
            |             |

Как это сделать и возможно ли это выполнить без написания собственного плагина?

Спасибо!

Ответы [ 7 ]

20 голосов
/ 22 июня 2011

Когда вы создаете тестовое задание, создайте его как «Построить мультиконфигурационный проект». При конфигурировании задания выберите «Матрица конфигурации», затем «Определяемая пользователем ось»

Вы можете использовать имя этогоось как параметр в вашей работе.Данные параметры будут запущены одновременно в разных заданиях.(если имеется достаточно исполнителей)

2 голосов
/ 25 апреля 2014

Проигрывая ответ @ Су Вей Тан, я нашел следующие работы хорошо.

  • Параметризованный триггерный плагин
  • Выберите «Фабрика параметров»
  • Выберите «Для каждого файла свойств, вызвать одну сборку»

Затем в оболочке запишите ряд файлов свойств, а плагин Trigger позаботится обо всем остальном.

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

1 голос
/ 07 июля 2016

У меня было такое же требование, и я обнаружил, что Параметризованный плагин триггера не был достаточно гибким для параллельной передачи различных параметров в разные (или одинаковые) задания.Да, вы можете использовать фабрику параметров с файлами свойств, но это будет означать добавление новых файлов свойств в мой контроль версий исключительно для настройки Jenkins.Проект Multi-Configuration с матрицей конфигурации также казался слишком сложным.

Лучшим и более простым решением для меня был Multijob Plugin , который имеет концепцию Phases.MultiJob может иметь несколько фаз.Фазы запускаются последовательно, а задания внутри фазы выполняются параллельно (параллельно).

После установки плагина MultiJob при создании нового элемента Jenkins выберите MultiJob Project .Затем вы можете создать одну или несколько фаз.Каждое задание в фазе имеет свои параметры, нажмите Дополнительно ... -> Добавить параметры

Также очень легко настроить, что должно произойти, если конкретное задание не выполнится, если всеMultiJob продолжить или потерпеть неудачу и т. Д., См. Завершение фазы на: и Условие продолжения до следующей фазы, когда статусы заданий: настройки.

Для меня это было многоболее интуитивно понятен в использовании, чем плагин Parameterized Trigger или проект Mult-Configuration, и не требует дополнительной настройки вне Jenkins.

1 голос
/ 11 апреля 2011

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

0 голосов
/ 26 августа 2014

У меня немного другой вариант использования.У нас есть тестовые задания, которые выполняются в соответствии с нашей основной сборкой в ​​течение цикла разработки.Ближе к концу цикла;мы создаем сборку кандидата и запускаем те же тесты для этого.Мы также хотим продолжить тестирование основной сборки.

               Main Build     Release Build
                         \   /
                           |
                       same set of tests

Я могу создать дублирующие задания с разными именами, чтобы справиться с этим.Но должен быть более элегантный / простой способ.

0 голосов
/ 23 апреля 2013

Один из вариантов - использовать плагин 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.

0 голосов
/ 01 июня 2011

Не могли бы вы сказать немного больше, почему вам нужно, чтобы тестовые задания выполнялись одновременно?

Я использую тест, который нужно разделить и запустить одновременно, но я использую одно задание Дженкинса / Хадсона с весом> 1 (см. Плагин для тяжелых работ ).

...