Частота сборки Jenkins на основе предыдущего статуса сборки

#jenkins #jenkins-pipeline

#jenkins #jenkins-конвейер

Вопрос:

У меня есть конвейер Jenkins, который должен запускаться каждые 4 часа. Однако мои требования заключаются в том, что после сбоя сборки я хочу, чтобы сборки выполнялись чаще и продолжали отправлять постоянные напоминания о том, что сборка нарушена. Короче говоря, расписание сборки должно зависеть от состояния предыдущей сборки.

Возможно ли это в Jenkins?

Спасибо,

Ответ №1:

В конвейере со сценариями вы можете сделать что-то вроде этого :

 def triggers = []

if(currentBuild.getPreviousBuild().result != 'SUCCESS') {
    triggers << cron('0 */1 * * *') // every hour
} else {
    triggers << cron('0 */4 * * *') // every 4 hours
}

properties ([
    pipelineTriggers(triggers)
])

node {
    ...
}
  

Ответ №2:

Я не могу придумать прямой способ, но у вас может быть обходной путь. У вас может быть точная копия того же задания (назовем это заданием ‘B’) и запускать ее при сбое сборки первого задания (назовем это заданием ‘A’). Теперь, если B снова завершается с ошибкой, вы можете повторно запустить его (B) (добавив некоторое время ожидания) и отправить уведомление после сбоя, продолжайте делать это, пока оно не пройдет. Это будет сделано намного проще, если вы используете скриптовый конвейер Jenkins. Надеюсь, этот ответ вам каким-то образом поможет.