У меня есть группа многоотраслевых конвейерных заданий, сгенерированных с помощью следующего скрипта groovy:
[
'repo1',
'repo2',
].each { service ->
multibranchPipelineJob(service) {
displayName(service)
branchSources {
git {
remote("[email protected]:whatever/${service}.git")
credentialsId('gitlab-ssh-key')
}
}
orphanedItemStrategy {
discardOldItems {
daysToKeep(0)
numToKeep(30)
}
}
triggers {
periodic(5)
}
}
}
и в каждом репо Jenkinsfile
который выглядит следующим образом:
#!/usr/bin/env groovy
properties([
gitLabConnection('[email protected]'),
pipelineTriggers([
[
$class : 'GitLabPushTrigger',
triggerOnPush : true,
triggerOnMergeRequest: true,
]
]),
disableConcurrentBuilds(),
overrideIndexTriggers(false)
])
node {
def sbtHome = tool name: 'sbt-0.13.15', type: 'org.jvnet.hudson.plugins.SbtPluginBuilder\$SbtInstallation'
stage('Checkout') {
checkout scm
}
stage('Build') {
sh "'${sbtHome}/bin/sbt' clean compile"
}
stage('Test') {
sh "'${sbtHome}/bin/sbt' test"
}
if (env.BRANCH_NAME == 'develop' || env.BRANCH_NAME == 'master') {
stage('Publish') {
sh "'${sbtHome}/bin/sbt' publish"
}
}
}
Все работает правильно. Проект seeder генерирует все папки из первого скрипта, и все ветки для данного репо создаются правильно.
К сожалению, у меня проблемы с запуском сборки для любой ветки после коммита + push, сделанного для gitlab.
Я правильно настроил jenkins - я имею в виду плагин gitlab, соединение есть, и все работает хорошо.
Я также добавил webhook на стороне gitlab, и он также работает правильно. После отправки тестового нажатия я получаю 200 OK
от jenkins и в журналах вижу, что сканирование веток началось и правильно обнаружил изменения. К сожалению, сборка для измененной ветки не начинается. Вот выдержка из журнала сканирования ветки:
Checking branch ci
‘Jenkinsfile found
Met criteria
Changes detected: ci (a7b9ae2f930b0b10d52bb42f1ecf96a68bba4a30 → 39a4c1a65051d5e90079feec14ad22455a77c58e)
Did not schedule build for branch: ci
Я на 100% уверен, что это не проблема со связью между моим экземпляром jenkins и учетной записью gitlab. Я вижу, что webhook срабатывает после нажатия на gitlab, я вижу отправку запроса и сканирование ветки. Изменения также обнаружены, но почему работа не началась? Я также внимательно прочитал документы и все настроил правильно.
Jenkins version: 2.150.3
Gitlab version: 11.8.1-ee
РЕДАКТИРОВАТЬ
Кажется, что после обновления jenkins до v.2.164.1 все стало работать правильно.