gpt4 book ai didi

Gitlab webhook 不会触发在 jenkins 上的构建

转载 作者:IT王子 更新时间:2023-10-29 01:27:51 26 4
gpt4 key购买 nike

我有一组使用以下 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)
}

}
}

并且在每个 repo 中都有一个如下所示的 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"
}
}
}

一切正常。 seeder 项目从第一个脚本生成所有文件夹,并且正确构建给定 repo 的所有分支。

不幸的是,在对 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

我 100% 确定这不是我的 jenkins 实例和 gitlab 帐户之间的通信问题。我看到 webhook 在推送到 gitlab 后被触发,我看到请求正在发送并且分支扫描正在运行。还检测到更改,但到底为什么工作没有开始?我还阅读了 docs彻底并正确配置所有内容。

Jenkins version: 2.150.3
Gitlab version: 11.8.1-ee

编辑

似乎在将 jenkins 升级到 v.2.164.1 后一切都开始正常工作。

最佳答案

我发现这非常有用 Setup Example (Continuous Integration with Jenkins and GitLab)。特别是源代码管理部分:

We need to specify the name as “origin”, which will be used by the other sections. For the Refspec we need to input: +refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

还有:

Branch Specifier we need origin/${gitlabSourceBranch} which will be filled in based on the web hook we’ll be setting up next.


编辑1

您可以对一个多分支管道尝试以下操作:

  1. 选择一个分支,例如ci
  2. 选择“查看配置”
  3. 在“Build Triggers”下选中复选框“Build when a change is pushed to GitLab”
  4. 修改代码并推送到ci

编辑2

我找不到合适的 git 项目来运行并尝试重现此行为。因此,如果有人知道类似的项目并可以分享,请发表评论,我可以做更多的测试。

对于 Gitlab(请求试用 key ,otherwise it will be a GitLab Community Edition):

sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ee:11.8.1-ee.0

对于Jenkins:

sudo docker run  -u root  --rm  -d  -p 8080:8080  -p 50000:50000  -v jenkins-data:/var/jenkins_home  -v /var/run/docker.sock:/var/run/docker.sock  jenkins/jenkins:2.150.3

然后在 Gitlab 中“Integration”—>“Jenkins CI”,如下图所示:enter image description here

希望对您有所帮助!

关于Gitlab webhook 不会触发在 jenkins 上的构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54956947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com