tjvb / gitlab-webhooks-receiver-for-laravel
接收来自 GitLab 的 webhooks 并将数据存储到数据库中。
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
- laravel/framework: ^9.0 || ^10.0 || ^11.0
- nesbot/carbon: ^2.0
- thecodingmachine/safe: ^2.0
Requires (Dev)
- fakerphp/faker: ^1.14
- infection/infection: ^0.26.10 || ^0.27.0
- orchestra/testbench: ^7.0 || ^8.0 || ^9.0
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.5 || ^10.0
- squizlabs/php_codesniffer: ^3.5
- thecodingmachine/phpstan-safe-rule: ^1.2
README
GitLab 提供了发送多个事件的 webhooks 选项,这些事件可用于不同的目的。此包负责接收、验证和存储 webhook 数据。接收后,将派发一个事件,您可以使用该事件来处理适合您应用程序的数据。
安装
您可以通过 composer 安装此包
composer require tjvb/gitlab-webhooks-receiver-for-laravel
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --provider="TJVB\GitLabWebhooks\GitLabWebhooksServiceProvider" --tag="migrations"
php artisan migrate
监听
\TJVB\GitLabWebhooks\Events\HookStored::class
事件。该包存储 webhook 数据并派发一个事件,您可以监听 HookStored 事件并按自己的方式处理。有关事件和监听器的更多信息,请参阅 Laravel 文档。设置环境变量
GITLAB_WEBHOOK_SECRET
(最常用的方法是将其设置在 .env 文件中)以获取您用于 webhook 的令牌。有关更多信息,请参阅 https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#secret-token。在 GitLab 中创建 webhook。您可以为您的项目、组或系统在 GitLab 中创建 webhook。默认 URL 为
<application.tld>/gitlabwebhook
,您可以在 tjvb/gitlab-webhooks-receiver-for-laravel 配置 中更改此 URL。可选配置包。
手动注册服务提供者。
如果您禁用了包发现,则需要将 \TJVB\GitLabWebhooks\GitLabWebhooksServiceProvider::class,
添加到 config/app.php 文件中的 providers 数组中。
配置
自定义
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="TJVB\GitLabWebhooks\GitLabWebhooksServiceProvider" --tag="config"
安全
默认配置验证 webhook 请求头中的 X-Gitlab-Token
。您可以在配置文件中添加多个值或禁用中间件以停止验证。如果需要对请求进行更多验证(例如 IP 过滤),您可以在配置中添加更多中间件。
更新日志
我们(尽量)在 更新日志 中记录了所有更改,请阅读以获取更多信息。
贡献
非常欢迎您贡献力量,有关信息请参阅 贡献指南。
安全
如果您发现任何安全相关的问题,请通过 info@tjvb.nl 发送电子邮件,而不是使用问题跟踪器。
提示
快速响应
如 此处 所述,GitLab 希望有一个快速的响应。这意味着配置一个在后台运行作业的队列驱动程序是有用的。这意味着如果您使用同步驱动程序,响应可能会太慢,因此您可能会再次收到 webhook。
测试您的 webhook
在 GitLab 页面的 webhook 设置中,您可以测试 webhook,使用它来验证一切是否按预期工作。
清理您的 hooks
如果您不需要在webhook中保存数据,定期删除旧数据可能是个好主意。根据钩子的类型,主体内容可能非常大。这可以在事件监听器的末尾完成,或者使用类似 spatie/laravel-model-cleanup 的包来完成。
致谢
感谢
- GitLab 提供的优秀产品,没有它这个包就不必要了。
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。