Jenkins Multibranch Pipeline из системы управления версиями (Bitbucket) - могу ли я указать правила для определенных веток?

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

Задание 1: извлечь файлы из системы управления версиями (Subversion и Git) и в случае успеха запустить задание 2 (из конфигурации задания).

Задание 2: перенесите файлы из задания 1 на узел и выполните сценарии развертывания. В работе много дополнительных настроек, которые мне не нужно объяснять. Если это задание выполнено успешно, веб-приложение развернуто.

Однако принцип работы многоотраслевого конвейера заключается в том, что он указывает на файл Jenkins каждой ветки (который запускает задание 1) и строит его. Каждый раз выполняется успешно, но не запускает задание 2. Также в BitBucket он отображается как успешная сборка для всех веток, поскольку ищет только это конкретное задание.

Есть ли способ создать индивидуальные правила для заданий ветки, чтобы они запускали другое задание и чтобы BitBucket искал это задание в качестве ссылки, если сборка прошла или не удалась? Мне бы очень не хотелось объединять всю функциональность в одном JenkinsFile, потому что это было бы серьезным изменением. Спасибо.


person Gergan Zhekov    schedule 05.11.2019    source источник


Ответы (1)


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

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

Во-вторых, если функциональность различается для каждой ветки, я бы предложил придумать общие функции и попробовать передать параметры на основе требований каждой ветки в первом файле Jenkins.

Это просто идея. Если вы можете рассказать немного больше о поведении второй работы, я мог бы подбросить еще несколько идей, чтобы помочь вам.

person NIK    schedule 05.11.2019