我有一组多分支流水线作业,是使用以下Groovy脚本生成的:
[
'repo1',
'repo2',
].each { service ->
multibranchPipelineJob(service) {
displayName(service)
branchSources {
git {
remote("git@gitlab.com:whatever/${service}.git")
credentialsId('gitlab-ssh-key')
}
}
orphanedItemStrategy {
discardOldItems {
daysToKeep(0)
numToKeep(30)
}
}
triggers {
periodic(5)
}
}
}
在每个存储库中,都有一个如下所示的
Jenkinsfile
:#!/usr/bin/env groovy
properties([
gitLabConnection('ci@gitlab.com'),
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"
}
}
}
一切正常。{{播种者}}项目从第一个脚本生成所有文件夹,给定存储库的所有分支都正确构建。
不幸的是,在提交和推送到GitLab后,我无法触发任何分支的构建。
我已经正确配置了Jenkins(指GitLab插件),连接正常,一切都正常。
我还在GitLab侧添加了Webhook,它也正常运行。发送测试推送后,我从Jenkins收到
200 OK
,并且在日志中看到扫描分支已开始,并且正确检测到更改。不幸的是,更改的分支的构建未启动。以下是分支扫描日志的摘录: Checking branch ci
‘Jenkinsfile’ found
Met criteria
Changes detected: ci (a7b9ae2f930b0b10d52bb42f1ecf96a68bba4a30 → 39a4c1a65051d5e90079feec14ad22455a77c58e)
Did not schedule build for branch: ci
我可以肯定这不是我的Jenkins实例和GitLab账户之间通信的问题。我看到在推送到GitLab后触发了Webhook,我看到请求被发送并运行了分支扫描。变更也被检测到,但是为什么任务没有启动呢?我还仔细阅读了文档并正确地进行了配置。
Jenkins version: 2.150.3
Gitlab version: 11.8.1-ee
编辑
似乎将Jenkins升级到v.2.164.1之后,一切都开始正常工作了。