Запуск задания путем опроса нескольких репозиториев GIT внутри Jenkinsfile

В Jenkinsfile с двумя репозиториями git это пример использования нескольких репозиториев GIT в одном задании Дженкинса:

node {
 dir('RepoOne') {
 git url: 'https://github.com/somewhere/RepoOne.git'
 }
 dir('RepoTwo') {
 git url: 'https://github.com/somewhere/RepoTwo.git'
 }

 sh('. RepoOne/build.sh')
 sh('. RepoTwo/build.sh')
}

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

Проблема в том, что задание является опросом не репозиториев, упомянутых внутри Jenkinsfile, а репозитория самого Jenkinsfile (он хранится в специальном репозитории, а не вместе с исходным кодом), который упоминается в конфигурации GUI задания.

Со старым Jenkins (без кодированного конвейера) и SVN-плагином это было очень просто, потому что все N репозиториев можно было упомянуть в конфигурации графического интерфейса, проверять на отдельные подкаталоги одного рабочего пространства и одновременно опросить.

Как я могу достичь того же результата с помощью GIT + Jenkins Pipeline-As-Code? Я попытался использовать также параметр "poll: true" в файле Jenkins, но это не помогло. Что делает этот вариант?

UPDATE 1: Вот сценарий конвейера, который я действительно использую, и который не работает:

properties([
 pipelineTriggers([
 scm('H/5 * * * *')
 ])
])

node {
 stage ('Checkout') {
 dir('cplib') {
 git(
 poll: true,
 url: 'ssh://git@<server>:<port>/base/cplib.git',
 credentialsId: 'BlueOceanMsl',
 branch: 'master'
 )
 }
 dir('cpmffmeta') {
 git(
 poll: true,
 url: 'ssh://git@<server>:<port>/base/cpmffmeta.git',
 credentialsId: 'BlueOceanMsl',
 branch: 'master'
 )
 }
 }

 stage ('Build') {
 ...
 }
</port></server></port></server>
2 ответа

Я нашел причину проблемы. Это была ошибка, описанная https://issues.jenkins-ci.org/browse/JENKINS-37731. Я использовал неправильный синтаксис. Правильный выглядит так:

properties([
 pipelineTriggers([
 [$class: "SCMTrigger", scmpoll_spec: "H/5 * * * *"],
 ])
])


На шаге git должен быть параметр "опрос", который вы установите на true, а затем задание настроено на опрос изменений scm. Вы также можете использовать общий шаг scm для проверки git и убедиться, что он настроен на опрос. Если настройка "poll: true" не работает, я подозреваю, что это ошибка. Однако вам, вероятно, сначала нужно запустить хотя бы одно задание вручную.

licensed under cc by-sa 3.0 with attribution.