Подтвердить что ты не робот

Как запускать идентичные задания с разными параметрами при параллельном выполнении?

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

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

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

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

Спасибо!

4b9b3361

Ответ 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 (см. Тяжелый плагин работы).