如何使用gitlab webhook触发詹金斯多分支管道



i当前设置了一个基于GitLab服务器上托管的GIT存储库的Jenkins多支付管道作业。詹金斯(Jenkins)可以阅读存储库中的分支,并为存储库中的每个分支创建一个作业。但是我不知道如何用gitlab中的webhook触发作业。

我的问题是:

  1. 如何如何从我们的gitlab服务器中的jenkins触发新的分支作业?我看不到一个被推新分支的网络钩。

  2. i 如何触发单个分支的实际构建作业?我只能添加一个用于推送事件的网络钩,但是我必须添加我不知道该怎么做的分支名称。

  3. 在推入分支之前,我如何确保Gitlab始终触发"分支作业的创建"。

我到目前为止尝试的是触发多分支作业,但这没有效果,遵循此帖子根本不起作用。

您需要在Jenkins上安装GitLab插件。

这将在Jenkins上添加/project端点。(在jenkins =>管理中请参见它jenkins =>配置系统=> gitlab)

现在,在您的gitlab project => settings => Integration上添加Webhook。(或在较旧的gitlab版本中:gitlab project => wheel图标=>集成,在这种情况下,您似乎需要成为项目的所有者)

在URL中:设置http://*yourjenkins.com*/**project**(/*foldername*)?/*yourprojectname*,仅此而已,然后单击"添加Webhook"。

单击Webhook上的测试时,它应该触发您的Jenkins管道构建。(您应该有200 HTTP响应)

它在gitlab插件中无需身份验证,欢迎使用身份验证的配置。

使用gitlab branch源插件

有一个(仍然有点新的)Jenkins插件,称为Gitlab Branch源,它提供了许多很棒的功能,我无法轻松地设置该插件,而没有插件,并且应该轻松适应OP的要求。/p>

例如,您可以创建一个"多支管线" Jenkins作业,将其配置为所需的" Gitlab Project"作为其"分支来源",并且将自动为您的项目分支机构创建新的Jenkins作业和新的Jenkins作业为了您的合并请求。该插件还可以自动在Gitlab项目上自动安装Web挂钩,以便新的分支,提交或合并请求将触发Jenkins。

所有这些都是可配置的,例如,您可以选择自动Web挂钩创建或选择退出。或者,您可以指定合并请求作业应创建并查看测试的本地合并提交/结果。

重要的多重跨国公司-200响应,但没有任何触发

接受的答案是正确的。但是,正如许多人在使用Gitlab分支源插件时指出的那样,他们从Gitlab测试Webhook时,他们会得到200个,但没有触发Jenkins。

这实际上是GitLab上测试功能的问题。

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

这给我带来了很多痛苦!希望我为您省下一些。

这是对上面有关合并请求的问题评论的较长回答,并且由于长度,我将其发布为答案而不是评论。

多支气管线不支持Gitlab合并请求钩。更准确地说,GitLab插件不支持这一点。如果添加了合并请求Webhook并进行测试,您将获得响应..."此项目不支持Merge Request Hook"。转到您找到的文档...

" 管道乘数型型

注意:没有办法将外部数据从GitLab传递到管道多发性工作,因此Gitlab环境变量未针对此作业类型填充。GitLab将仅触发Jenkins项目的分支索引,Jenkins将相应地建立分支机构而无需例如git分支env var。因此,该插件只是聆听gitlab推挂钩的多发性管道作业。合并请求钩被忽略。"https://github.com/jenkinsci/gitlab-plugin#pipeline-multibranch-jobs

非常不幸。您至少可以创建"管道"类型的经典作业,并使用" SCM"选项的"管道脚本"选项,该选项将依赖于存储库中的Jenkinsfile。这将支持脚本或声明性的脚本或2的混合物。这意味着您可以将其指向您已经在蓝色海洋中创建的Jenkinsfile(只是发现您无法为此做合并请求,因为创建了管道在蓝海中,当然总是多重的)。然后,您可以配置此经典管道作业以使用作业配置在合并请求上触发。您将需要根据需要使用脚本中的插件步骤进行UPDATEPATITLABCOMMITSTATUS和ACCEPTGITLABMR。这至少会导致在更现代的蓝色海洋UI中查看管道运行的能力。gitlab MR中的管道链接也将引导您进入同一UI。

最新更新