i当前设置了一个基于GitLab服务器上托管的GIT存储库的Jenkins多支付管道作业。詹金斯(Jenkins)可以阅读存储库中的分支,并为存储库中的每个分支创建一个作业。但是我不知道如何用gitlab中的webhook触发作业。
我的问题是:
-
如何如何从我们的gitlab服务器中的jenkins触发新的分支作业?我看不到一个被推新分支的网络钩。
-
i 如何触发单个分支的实际构建作业?我只能添加一个用于推送事件的网络钩,但是我必须添加我不知道该怎么做的分支名称。
-
在推入分支之前,我如何确保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。