У меня довольно сложная работа Дженкинса, которая строит, модульные тесты и пакеты веб-приложения. В зависимости от ситуации, я хотел бы делать разные вещи после завершения этой работы. Я не нашел способ повторного использования/поддержки для этого. Это действительно так, или я что-то упускаю?
Параметры, которые я хотел бы получить после завершения моей сложной работы:
-
Ничего не делать
-
Начните мой проект сборки с низким уровнем риска:
- копирует мой файл WAR в мой репозиторий артефактов
- развертывается в производство
-
Начните мой проект сборки с высоким риском:
- копирует мой файл WAR в мой репозиторий артефактов
- развертывает для тестирования
- запустить приемочные испытания
- развертывание в производство
Я не нашел простой способ сделать это. Самый простой, но не очень удобный подход - это сделать три отдельных задания, каждый из которых начнет строить вниз по течению. Этот подход пугает меня по нескольким причинам, включая тот факт, что изменения должны были быть сделаны в трех местах вместо одного. Кроме того, многие из нижеперечисленных рабочих мест также почти идентичны. Единственное различие заключается в том, какие последующие задания они вызывают. Распространение рабочих мест похоже на то, что это приведет к неустранимому беспорядку.
Я рассмотрел несколько подходов, чтобы сохранить это как одно задание, но пока никто не работал:
-
Сделайте работу проектом с несколькими конфигурациями (https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project). Это дает возможность ввести задание с параметром. Я не нашел способ сделать шаг "строить другие проекты" отреагировать на параметр.
-
Используйте плагин Parameterized-Trigger (https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin). Этот плагин позволяет запускать задания по потоку на основе определенных триггеров. Однако триггеры выглядят слишком ограничительными. Все они основаны на состоянии сборки, а не на любых переменных. Я не вижу здесь никакого параметра, который бы работал для моего использования.
-
Используйте плагин Flexible Publish (https://wiki.jenkins-ci.org/display/JENKINS/Flexible+Publish+Plugin). Этот плагин имеет противоположную проблему как плагин с параметризованным триггером. У этого есть много полезных условий, которые он может проверить, но не похоже, что он может начать строительство другого проекта. Его действия ограничены деятельностью типа публикации.
-
Используйте плагин Flexible Publish + Any Build Step (https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin). Плагин Any Build Step позволяет сделать любое действие сборки доступным для плагина Flexible Publish. В то время как больше действий было доступно после активации этого плагина, эти действия не включали "сборку других проектов".
Действительно ли нет простого способа сделать это? Я удивлен, что я не нашел его и еще больше удивился, что я действительно не видел, чтобы кто-то еще пытался это сделать? Я делаю что-то необычное? Есть ли что-то очевидное, что мне не хватает?