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

Mic*_*ihs 19 git jenkins gitlab jenkins-pipeline multibranch-pipeline

我目前设置了一个Jenkins多分支管道作业,该作业基于我们​​的Gitlab服务器上托管的Git存储库.Jenkins可以读取存储库中的分支,并为存储库中的每个分支创建一个作业.但我无法弄清楚如何在Gitlab中使用webhooks触发作业.

我的问题是:

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

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

  3. 如何在推送到分支触发构建作业本身之前确保Gitlab始终触发"创建分支作业".

到目前为止我尝试的是触发多分支工作,但这没有任何效果,并且在这篇文章之后根本不起作用.

Ant*_*ine 11

你需要在Jenkins上安装Gitlab插件.

这将/project在Jenkins上添加一个端点.(在Jenkins中查看=>管理Jenkins =>配置系统=> Gitlab)

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

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

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

它在Gitlab插件中无需身份验证即可运行,欢迎使用身份验证进行配置.

  • 这就是你所做的一切?如果我设置它,就像你描述的多分支管道一样,我在gitlab中得到了200响应,但在jenkins中没有任何反应.我也有一些自由式工作,他们像你的描述一样工作...... (4认同)
  • 这似乎是单个管道作业的说明,但它不适用于多分支作业.我应该为多管道作业中创建的每个分支配置webhook吗?谢谢 (4认同)
  • 我在开发早午餐中有一个 Jenkinsfile 并且已经运行它,但触发不起作用。我还读到 jenkins gitlab 插件不支持多分支管道 (2认同)
  • 是的gitlab插件不能完全用于MultibranchPipeline作业,问题是你必须在Gitlab端手动创建webhook. (2认同)
  • 有人能够使其与多分支管道一起工作吗? (2认同)
  • 接受的答案是正确的。然而,正如许多人指出的那样,当他们在多分支作业上测试来自 gitlab 的 webhook 时,他们得到 200,但 Jenkins 上没有任何触发。这其实是gitlab上测试功能的问题。如果您通过将代码推送到分支来进行实时测试,它将被触发。 (2认同)

Chr*_*iki 5

使用 GitLab 分支源插件

\n

有一个(仍然有些新的)Jenkins 插件,称为GitLab Branch Source,它提供了许多出色的功能,如果没有该插件,我无法轻松设置这些功能,并且它应该可以轻松满足 OP\xe2\x80\x99s 的要求。

\n

例如,您可以创建一个 \xe2\x80\x9cMultibranch Pipeline\xe2\x80\x9d Jenkins 作业,将其配置为将所需的 \xe2\x80\x9cGitLab Project\xe2\x80\x9d 作为其 \xe2\x80\ x9cBranch Source\xe2\x80\x9d ,它将自动为您的项目分支创建新的 Jenkins 作业,并为您的合并请求创建新的 Jenkins 作业。该插件还可以在 GitLab 项目上自动安装 Web 挂钩,以便新的分支、提交或合并请求将触发 Jenkins 继续前进。

\n

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

\n


Lou*_*uis 5

重要的多分支作业 - 200 响应但没有任何触发

接受的答案是正确的。然而,正如许多人指出的那样,当他们使用GitLab Branch Source 插件 测试来自 gitlab 的 webhook 时,他们得到了 200,但 Jenkins 上没有任何触发。

这其实是gitlab上测试功能的问题。

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

这给我带来了很大的痛苦!希望我能为你节省一些。