如何创建 GitLab 网络钩子?

Posted

技术标签:

【中文标题】如何创建 GitLab 网络钩子?【英文标题】:How do I create a GitLab webhook? 【发布时间】:2013-06-14 00:34:10 【问题描述】:

我读到 GitLab 能够通过“网络挂钩”向其他服务器发送消息,但我找不到 在哪里可以创建一个。

有人能指出正确的方向吗?

【问题讨论】:

【参考方案1】:

我建议使用GitLabForm - 作为 GitLab 的代码工具配置 - 使用如下代码配置 webhook:

project_settings:
  my_group/my_project:
    hooks:
      hooks:
      'http://127.0.0.1:5000/hooks/my-hook-endpoint':
        push_events: false # this is set to true by GitLab API by default
        merge_requests_events: true
        token: some_secret_auth_token

披露:我编写了这个工具,我的公司开源了它。

【讨论】:

【参考方案2】:

在 8.16.1 版本中,我在下面找到了 web 挂钩

specific project > settings > integrations

【讨论】:

【参考方案3】:

对于组级挂钩:

访问:https://gitlab.com/groups/<yourgroup>/hooks

对于组项目级别的挂钩:

访问:https://gitlab.com/yourgroup/yourproject/hooks

【讨论】:

【参考方案4】:

我在官方文档和 Stack Overflow 上找到的所有用于查找 web hooks 的答案都是不正确的。 admin area > hooks 页面不包含 web 挂钩。它包含 system 钩子,当您创建/删除项目和用户时触发。这不是你想要的。

要查找您的网络挂钩,请转到 specific project > settings > web hooks (on sidebar in GitLab 6.1.0) 页面。这些将在相关项目的接收后触发。您可以使用RequestBin 之类的服务来查看有效负载的外观,并确保您出于调试目的正确地触发了它们。

【讨论】:

比我的答案更准确。 +1。这应该是公认的答案。 感谢杰米的回答。应用程序本身中有关于 GitLab 网络和服务器挂钩的官方文档:demo.gitlab.com/help/web_hooks 和 demo.gitlab.com/help/system_hooks。演示服务器的登录凭据列在demo.gitlab.com。 太好了!但是,它仍然没有告诉您 在哪里 可以找到网络挂钩。这就是我和@leech 不久前遇到的问题。 系统钩子仍然是网络钩子,它们只是系统事件的网络钩子,而不是存储库事件。 这只能通过网站实现还是可以使用 api 创建 webhook?【参考方案5】:

你可以看到一个 GitLab 系统钩子的例子,在这个 GitHub project 中创建了一个 web_hook.rb。

在 gitlab 中,以管理员身份进入“Hooks”选项卡,创建钩子为:http://your.ip.goes.here:8000

或更改脚本第 175 行的端口。

有关网络挂钩,请参阅Jamey 的more accurate answer。

您可以使用 RequestBin 之类的服务检查 Webhook 的结果。 另一个 webhook 解释示例:this question.

请注意,gitlab webhook 仍然存在一些问题:

it is not always firing There's no URL nor namespace key present on system's webhook

【讨论】:

以上是关于如何创建 GitLab 网络钩子?的主要内容,如果未能解决你的问题,请参考以下文章

在Gitlab中防止单个repo的链式git钩子

如何使用java中的api创建一个不和谐的网络钩子

在centos服务器上配置gitlab钩子引发的一系列问题

gitlab根据hook钩子自动化部署

Gitlab+Jenkins通过钩子实现自动部署web项目,图文详细教程

Gitlab+Jenkins通过钩子实现自动部署web项目,图文详细教程