Gitlab Jenkins Webhook 集成

7

那么目的是在将代码推送到 Gitlab 仓库后触发 Jenkins 作业构建,很简单吧?

下载了 Gitlab 插件并设置项目之后,仍然没有成功。我遇到了403错误。

1个回答

10

经过一些尝试,以下是我解决问题的方法:

我尝试的事情:
当Jenkins匿名用户没有作业/构建权限时Web挂钩失败
需要记录GitLab -> Jenkins身份验证设置 如何排除GitLab集成Web挂钩错误“您需要(但没有)hudson.model.Hudson”?

这是我采取的步骤来解决此错误:

“Hook已成功执行但返回HTTP 403…您已被认证为匿名组,您在其中:您需要的权限(但未获得)hudson.model .Hudson.Read…这是由hudson.security.Permission.GenericRead…”

进入 Jenkins > Manage Jenkins > configuration
进入Gitlab部分并确保如下: Make sure Enable authentication for 'project' end-point is activated 完成所有设置后,测试连接并确保成功。

在Jenkins项目中,进入Configure > Build Triggers并选择
Build when a change is pushed to Gitlab. Gitlab webhook URL...
同时,确保在高级设置中生成令牌

remember to generate the token in advanced settings
现在,在Gitlab中进入您的Project > Settings > Integrations, 粘贴您在Jenkins项目中得到的URL,以及在Gitlab Build Triggers部分生成的令牌,取消ssl验证 Webhook conf

现在保存并测试您的挂钩
Test hook

你应该在Gitlab上获得200的成功消息,在Jenkins上触发作业:
GitlabSuccess hook
Jenkins initiated job
如果不是这种情况,你仍然获得403错误,你可以做以下几件事情:

在Gitlab中为你的项目添加一个Jenkins用户(你正在尝试从中获取Webhook触发)。 这次它应该起作用!!! gitlab members

故障排除

如果仍然无法工作,您可以使用的另一个助手是向Jenkins添加记录器。 转到Jenkins >管理Jenkins>系统日志

  • 添加新的记录器。键入记录器的名称
  • 在输入框中添加记录器。开始输入gitlab或webhooks, 与Gitlab或Webhooks相关的任何内容 :)
    loggers loggers conf 点击保存并开始查看从Gitlab触发钩子时发生了什么 logs

1
前往“管理Jenkins”>“配置全局安全性”,并为匿名用户添加“构建元素权限”。 - Powerriegel
非常好的指导!在最近的GitLab中,现在在项目设置-->Webhooks下。 - Noam Manos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接