如何使用Gitlab Webhook触发Jenkins多分支管道

如何使用Gitlab Webhook触发Jenkins多分支管道,git,jenkins,gitlab,jenkins-pipeline,multibranch-pipeline,Git,Jenkins,Gitlab,Jenkins Pipeline,Multibranch Pipeline,我目前设置了一个Jenkins多分支管道作业,该作业基于Gitlab服务器上托管的Git存储库。Jenkins可以读取存储库中的分支,并为存储库中的每个分支创建一个作业。但我不知道如何使用Gitlab中的Webhook触发作业 我的问题是: 如何从我们的Gitlab服务器在Jenkins中触发新分支作业的创建?我看不到推送新分支的webhook 如何触发单个分支的实际构建作业?我只能为推送事件添加webhook,但是我必须添加分支名称,我不知道如何做 如何确保Gitlab总是在推送到分支触发构建

我目前设置了一个Jenkins多分支管道作业,该作业基于Gitlab服务器上托管的Git存储库。Jenkins可以读取存储库中的分支,并为存储库中的每个分支创建一个作业。但我不知道如何使用Gitlab中的Webhook触发作业

我的问题是:

  • 如何从我们的Gitlab服务器在Jenkins中触发新分支作业的创建?我看不到推送新分支的webhook

  • 如何触发单个分支的实际构建作业?我只能为推送事件添加webhook,但是我必须添加分支名称,我不知道如何做

  • 如何确保Gitlab总是在推送到分支触发构建作业本身之前触发“创建分支作业”

  • 到目前为止,我尝试的是触发多分支作业,但这没有效果,下面的操作根本不起作用。

    您需要在Jenkins上安装

    这将在Jenkins上添加一个
    /project
    端点。(请参见Jenkins=>Administrate Jenkins=>Configure System=>Gitlab)

    现在在Gitlab项目=>Settings=>Integrations上添加一个webhook。(或者在较旧的Gitlab版本中:Gitlab project=>Wheel icon=>Integrations,在这种情况下,您似乎需要成为项目的所有者)

    在Url中:设置
    http://*yourjenkins.com*/**project**(/*foldername*)?/*yourprojectname*
    ,然后单击“添加Webhook”

    当您在webhook上单击test时,它应该会触发jenkins管道构建。(您应该有一个200 http响应)


    在Gitlab plugin中,它可以在没有身份验证的情况下工作,欢迎使用身份验证进行配置。

    这是对上面关于合并请求的问题注释的较长的回答,由于篇幅较长,我将其作为答案而不是注释发布

    多分支管道不支持Gitlab合并请求挂钩。更准确地说,gitlab插件不支持这一点。如果您添加合并请求webhook并对其进行测试,您将得到响应…”“此项目不支持合并请求挂钩”。转到您找到的文档

    管道多分支作业

    注意:无法将外部数据从GitLab传递到管道多分支作业,因此没有为此作业类型填充GitLab环境变量。GitLab将只触发Jenkins项目的分支索引,Jenkins将相应地构建分支,而不需要git branch env var等。因此,插件只需多分支管道作业的GitLab推钩子的sten;忽略合并请求钩子。“

    非常不幸。您至少可以创建一个“Pipeline”类型的经典作业,并使用“Pipeline script from SCM”选项,该选项将依赖于repo中的jenkins文件。这将支持脚本式、声明式或2的混合。这意味着您可以将其指向已经在Blue Ocean中创建的Jenkins文件(只会发现您无法为此执行合并请求,因为在Blue Ocean中创建的管道当然总是多分支的)。然后,您可以使用作业配置将此经典管道作业配置为在合并请求时触发。您需要根据需要使用脚本中的插件步骤来更新gittlabcommitstatus和acceptGitLabMR。这至少能够在更现代的蓝海用户界面中查看管道运行。Gitlab MR中的管道链接也会将您引导到相同的UI。

    使用Gitlab分支源插件 有一个叫Jenkins的插件(还是有点新的),它提供了很多很好的特性,没有这个插件我很难设置这些特性,而且应该很容易满足OP的要求

    例如,您可以创建一个“多分支管道”Jenkins作业,将其配置为将所需的“GitLab项目”作为其“分支源”,这样将自动为项目分支创建新Jenkins作业,并为合并请求创建新Jenkins作业。该插件还可以在GitLab项目上自动安装一个web钩子,这样新的分支、提交或合并请求将触发Jenkins继续


    所有这些都可以很好地配置,例如,您可以选择加入或退出自动web钩子创建。或者,您可以指定合并请求作业应创建并签出本地合并提交/结果以进行测试。

    重要的多分支作业-200响应,但不触发任何操作

    公认的答案是正确的。然而,正如许多人指出的,当他们从gitlab测试webhook时,他们在Jenkins上得到了一个200但没有任何触发

    这实际上是gitlab上的测试函数的一个问题

    如果您通过将代码推送到分支进行实时测试,它将被触发


    这让我非常痛苦!希望我能帮你省点钱。

    我也有同样的问题,你不能用Webhook触发构建作业。这一切都成功了吗?你就是这么做的?如果我设置它,就像您描述的多分支管道,我在gitlab中得到200响应,但在jenkins中什么都没有发生。我也有一些自由式的工作,他们的工作方式和你描述的一样……我在开发早午餐中有一个Jenkins文件,并且已经运行了,但是触发不起作用。我还读到jenkins gitlab插件不支持多分支管道gitlab插件不完全适用于多分支管道作业,问题是您必须在gitlab端手动创建webhook。这似乎是单个管道作业的说明,但它不适用于多分支作业。我应该为多管道作业中创建的每个分支配置webhook吗?ThanksAnyone已经能够使它与多分支管道一起工作了?GitLab分支源代码似乎已损坏:它没有