Ответ 1
Я решил этот вопрос с большим количеством исследований и экспериментов. Эта документация привела меня на правильный путь: https://github.com/jenkinsci/workflow-scm-step-plugin/blob/master/README.md. В нем говорится:
Опрос поддерживается несколькими SCM (изменения в одном или нескольких запускают новую сборку) и снова выполняются в соответствии с SCM, используемыми в последней сборке рабочего процесса.
Это означает, что опрос SCM по-прежнему поддерживается рабочим процессом Jenkins, но, в отличие от обычного проекта freestyle, вы должны запускать его один раз вручную, прежде чем он начнет прослушивать изменения SCM. Это имеет смысл, поскольку SCM определены в коде Groovy; они не известны, пока они не запускаются один раз.
Один сложный элемент заключается в том, что вы можете определить много SCM в своем рабочем процессе. Например, у меня есть три: один для самой службы, развертывание script и Groovy DSL рабочего процесса. По умолчанию изменения в любом из этих трех SCM приведут к тому, что опция "Опрос SCM" запускает сборку, что может быть нежелательно. К счастью, установка опции "poll: false" на шаге "git" в коде Groovy отключит опрос на этом репо. Если вы читаете DSL Groovy из SCM, вы можете отключить опрос на этом репо, нажав "дополнительные действия" в пользовательском интерфейсе Jenkins и добавив "Не запускать сборку на уведомлениях о фиксации".
Другим сложным элементом является то, что плагин веб-крючка Stash по умолчанию включает хэш-код SHA1 коммита в URL-адрес RESTful, с которым он сталкивается с Jenkins. К сожалению, Дженкинс ошибается в использовании того же кода фиксации, когда пытается вытащить любой из нескольких SCM, которые вы, возможно, определили. Хэш-код, конечно, относится только к одному SCM, поэтому он ломается. Вы можете обойти это, установив "Omit SHA1 Hash Code" в плагин веб-крючка Stash. Затем Дженкинс будет использовать последнюю фиксацию на любой ветке, из которой вы строите, в каждом из ваших SCM.