Декларативный конвейер Дженкинса с разными триггерами для каждой ветви

#jenkins #jenkins-pipeline #crontrigger #multibranch-pipeline

#дженкинс #дженкинс-конвейер #crontrigger #многоразветвленный конвейер

Вопрос:

Я ищу возможность реализовать разные триггеры cron для каждой ветви в задании декларативного конвейера jenkins. На данный момент я запускаю только почасовые сборки в нашей ветке разработчиков:

 String cron_string = BRANCH_NAME == "dev" ? "@hourly" : ""

pipeline {

   triggers {
        cron(cron_string)
   }

   //stages, options and more code here...

}
  

Моей целью было бы иметь две отдельные строки cron, которые запускали бы сборки в разное время в отдельных ветвях (например: ежечасные сборки в dev, каждые три часа сборки в master), однако выполнение было бы идентичным. Мой вопрос в том, могу ли я сделать что-то вроде приведенного ниже блока кода или мне следует использовать другой подход?

 String cron_string_1 = BRANCH_NAME == "dev"     ? "0 8/20 ? * MON-FRY" : ""
String cron_string_2 = BRANCH_NAME == "master"  ? "0 8/20/3 ? * MON-FRY" : ""


pipeline {

   triggers {
        cron(cron_string)
   }

   //stages, options and more code here...

}
  

Комментарии:

1. Привет, Хосе, лучше всего здесь был бы многоотраслевой конвейер с разными триггерами для каждой ветви (файлы дженкинса будут немного отличаться, но в этом суть многоотраслевого конвейера).

2. Вы когда-нибудь находили обходной путь для этого?

3. В итоге мы создали файл Jenkins для каждой ветви и отдельные задания для них.

Ответ №1:

У меня это сработало (используя скриптовые конвейеры):

 if (BRANCH_NAME == "dev") {
    properties(
        [
            pipelineTriggers([cron('0 8,13,17 * * *')])
        ]
    )
}
  

Комментарии:

1. Это не будет работать для нескольких ветвей. Предполагая, что ветвь разработчика создает первое задание, конвейер будет запущен и запланирует следующую сборку в соответствии с cron. Теперь, независимо от того, какая ветвь создает следующее задание, оно будет выполняться в соответствии с cron ветви разработчика. То же самое относится и к cron главной ветви.