Выполняйте ночные задания в многоотраслевом конвейере с декларативным файлом Jenkins без устаревшей функции «Подавить автоматический запуск SCM»

Jenkins ver. 2.150.3

У меня настроен разветвленный трубопровод. Я использую декларативный файл Jenkinsfile. У меня есть набор работ, выполнение которых требует много времени. Я хочу, чтобы они выполнялись на ночь для любых веток, в которых есть изменения.

Раньше можно было использовать параметр «Подавить автоматический запуск SCM» вместе с триггером cron для выполнения ночной сборки для веток с изменениями. (См. Выполнение ночных заданий в многоотраслевом конвейере с декларативным файлом Jenkins

У меня больше нет доступа к опции «Подавить автоматический запуск SCM».

Изображение отсутствующей опции 'Подавить автоматический запуск SCM'

Следующий триггер будет работать, даже если в коде ветки нет изменений.

triggers {
    cron('H 0 * * * *')
}

Следующий код запускается, если в ветке есть изменения. Тем не менее, многоотраслевой проект Jenkins, похоже, запускается из push, а не из pollSCM. Похоже, это не дает желаемого результата - запускать каждую ветку один раз в ночь, если есть изменения.

triggers {
    pollSCM('H 0 * * * *')
}

Как мне настроить Jenkins для выполнения ночных заданий для каждой ветки, только если в этой ветке есть изменения?


person chris094568    schedule 15.08.2019    source источник
comment
У вас настроен хук Post commit? Если да, можете ли вы добавить ignorePostCommitHooks в свой опрос SCM? Я не уверен, как вы можете получить к нему доступ через Declaretive pipeline, но мы используем его в скриптовом конвейере, например: [$class: "SCMTrigger", scmpoll_spec: "H 0 * * * *", ignorePostCommitHooks: true]   -  person Unforgettable631    schedule 16.08.2019
comment
В настоящее время я использую службу GitHub Enterprise Jenkins (подключаемый модуль GitHub), которая также устарела ... yikes. На данный момент я полностью привержен декларативному конвейеру.   -  person chris094568    schedule 19.08.2019
comment
Когда я использую pipeline-syntax для декларативного генератора директив, синтаксис выглядит почти так же: triggers { pollSCM ignorePostCommitHooks: true, scmpoll_spec: 'H H * * * ' }. Вы можете это попробовать? Дополнительные параметры доступны на <yourJenkinsurl>/directive-generator/.   -  person Unforgettable631    schedule 19.08.2019
comment
@ Unforgettable631, похоже, это помогло. Спасибо за совет по использованию генератора директив. Я не знал об этом инструменте.   -  person chris094568    schedule 21.08.2019


Ответы (1)


Добавление ответа из комментария сюда.

Вы можете добиться этого, используя следующий сценарий:

triggers {
  pollSCM ignorePostCommitHooks: true, scmpoll_spec: 'H H * * *'
}

С помощью генератора директив (доступен по адресу <yourJenkinsUrl>/directive-generator/, вы можете создавать сценарии, доступные в вашем экземпляре + см. Некоторую документацию, например:

Чтобы периодически запланированные задачи производили равномерную нагрузку на систему, по возможности следует использовать символ H (для «хеша»). Например, использование 0 0 * * * для десятка ежедневных заданий вызовет большой всплеск в полночь. Напротив, при использовании H H * * * каждое задание по-прежнему будет выполняться один раз в день, но не все одновременно, лучше с использованием ограниченных ресурсов.

person Unforgettable631    schedule 22.08.2019