Gitlab webhook获取错误:500内部服务器错误 - URI :: InvalidURIError

时间:2018-04-03 09:40:27

标签: jenkins gitlab webhooks gitlab-ci

使用Gitlab (10.6.2)和Jenkins在本地计算机上安装,并尝试通过gitlab的webhook自动构建,根据https://github.com/jenkinsci/gitlab-plugin/wiki/Setup-Example

但是,当测试推送时,gitlab会收到错误:

  

500内部服务器错误 - URI :: InvalidURIError

production.log中的详细日志是:

  

开始GET“/ laiwan / laiwan-parent / hooks / 2 / test?trigger = push_events”   对于127.0.0.1在2018-04-03 17:11:07 +0800处理方式   Projects :: HooksController #test as HTML参数:   {“trigger”=>“push_events”,“namespace_id”=>“laiwan”,   “project_id”=>“laiwan-parent”,“id”=>“2”}已完成500内部   服务器错误27ms(ActiveRecord:2.3ms)

     

URI :: InvalidURIError(URI :: InvalidURIError):
  lib / gitlab / proxy_http_connection_adapter.rb:14:in connection'
app/services/web_hook_service.rb:73:in
make_request'
  app / services / web_hook_service.rb:26:in execute'
app/models/hooks/web_hook.rb:10:in
执行'
  app / services / test_hooks / base_service.rb:22:in block in execute'
app/services/test_hooks/base_service.rb:19:in
catch'
  app / services / test_hooks / base_service.rb:19:in execute'
app/controllers/projects/hooks_controller.rb:41:in
test'
  lib / gitlab / i18n.rb:50:in with_locale' lib/gitlab/i18n.rb:56:in with_user_locale'app / controllers / application_controller.rb:330:in   set_locale' lib/gitlab/middleware/multipart.rb:95:in称之为'
  lib / gitlab / request_profiler / middleware.rb:14:in call'
lib/gitlab/middleware/go.rb:17:in
call'
  lib / gitlab / etag_caching / middleware.rb:11:in call'
lib/gitlab/middleware/read_only/controller.rb:28:in
call'
  lib / gitlab / middleware / read_only.rb:16:in call'
lib/gitlab/request_context.rb:18:in
call'
  lib / gitlab / metrics / requests_rack_middleware.rb:27:in call'
lib/gitlab/middleware/release_env.rb:10:in
call'

Gitlab webhook的网址是http://localhost:8282/project/laiwan-parent,它是有效的。

似乎有人在gitlab的问题页面上问了类似的问题,但还没有得到任何回复: https://gitlab.com/gitlab-org/gitlab-ee/issues/5375

任何帮助?

3 个答案:

答案 0 :(得分:6)

我在这里找到了解决方案:

https://gitlab.com/gitlab-org/omnibus-gitlab/issues/3307

原因是:

在新版本的gitlab中,默认情况下它不允许通过webhook向本地网络发出请求。

<强>解决方案:

  • 以root身份登录gitlab。
  • 点击顶部的Admin area图标 - &gt;设置。
  • Outbound requests部分中,选中Allow requests to the local network from hooks and services,然后保存。

然后webhook请求可以成功发送到同一主机上的jenkins。

(顺便说一句,虽然gitlab是一个很好的工具,但是我认为默认情况下应该检查这个选项,或者至少提出一些关于发生了什么的明确提示,而不是500错误,以保存开发的是时候解决这些问题了。)

答案 1 :(得分:0)

当我以管理员帐户登录GitLab CE时,我看不到设置[出站请求]。它是否位于版本10.7.3中的其他位置

答案 2 :(得分:0)

在gitlab 11.x中,该选项已移至 / admin / application_settings / network 。该文档不是最新的