如何创建 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 网络钩子?的主要内容,如果未能解决你的问题,请参考以下文章