Как условно построить другие проекты?

У меня довольно сложная работа в Jenkins, которая собирает, тестирует и упаковывает веб-приложение. В зависимости от ситуации, я хотел бы делать разные вещи после завершения этой работы. Я не нашел повторно используемый / поддерживаемый способ сделать это. Это действительно так или я что-то упустил?

Варианты, которые я хотел бы иметь после завершения моей сложной работы:

Ничего не делать

Запустите мой конвейер сборки с низким уровнем риска:

копирует мой файл 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. Хотя после активации этого плагина стало доступно больше действий, эти действия не включали «создание других проектов».

Неужели нет простого способа сделать это? Я удивлен, что я не нашел это, и еще более удивлен, что я действительно не видел, чтобы кто-то еще пытался сделать это? Я делаю что-то необычное? Есть ли что-то очевидное, чего мне не хватает?

Ответы на вопрос(6)

Ваш ответ на вопрос