Запускать ночные задания на многоотраслевом конвейере с декларативным Jenkinsfile
Дженкинс версия 2.121.2
У меня установлен многоотраслевой конвейер. Я использую декларативный Jenkinsfile.
У меня есть набор тестов, которые требуют много времени для запуска. Я хочу, чтобы они работали всю ночь для любых веток, у которых есть изменения.
Я попробовал несколько вещей, но моя текущая неудачная попытка:
Под заданием> настроить я включил "Подавить автоматический запуск SCM"
Установите для параметра "Scan Multibranch Pipeline Triggers"> "Периодически, если не выполняется иначе" значение 1 минуту (только для тестирования, я увеличу его, когда оно будет работать)
В моем Jenkinsfile (пример для пробежки в 4 утра) я также пытался pollSCM()
:
triggers {
cron('0 4 * * *')
}
В "Сканировании журнала многоотраслевого конвейера" я вижу следующее, но в 4 часа утра работа не выполняется (время в trigger()
в моем Jenkinsfile):
Changes detected: my-feature-branch (1234567890abcdefgh → abcdefgh123456789)
Did not schedule build for branch: my-feature-branch
Что я делаю не так, пожалуйста?
Редактировать:
Так что я попробовал эту настройку вместо этого:
Установите cron каждые 15 минут
triggers {
cron('5,20,35,50 * * * *')
}
Убрана настройка в разделе конфигурации в пользовательском интерфейсе "Подавить автоматический запуск SCM"
Но он запускается только после того, как произошел опрос (16 минут после часа в этом тесте).
Что когда я ничего не делаю, кажется, обращает внимание на мои настройки cron?
Если я попал в "Просмотр конфигурации" в разделе ветки в пользовательском интерфейсе, он показывает настройки пользовательского интерфейса из моего Jenkinsfile.
Изменить (снова!):
Таким образом, с последним редактированием он действительно запускался сразу, а затем снова во время cron.
Теперь снова включите в пользовательском интерфейсе настройку "Подавить автоматический запуск SCM".
И у меня это работает! Основная проблема, которую я понял (а) изменения не применяются Я не думаю, что до запуска после первого запуска с изменением в Jenkinsfile? (b) Также я установил следующий плагин исполнения, чтобы лучше видеть, что он планирует.
0 ответов
Проблема заключалась в том, что триггер, объявленный в multibranchPipelineJob, предназначен для сканирования нескольких веток. Для запуска задания периодически объявляйте триггер в конвейере следующим образом:
pipeline {
triggers {
cron('45 6 * * 1-5')
}
agent {
...