tjvb/gitlab-webhooks-receiver-for-laravel

接收来自 GitLab 的 webhooks 并将数据存储到数据库中。

v2.3.0 2024-03-12 21:49 UTC

This package is auto-updated.

Last update: 2024-09-12 22:02:29 UTC


README

Latest Stable Version Pipeline status Coverage report Tested on PHP 8.1 to 8.3 Tested on Laravel 9 to 11 Latest Unstable Version

PHP Version Require Laravel Version Require PHPMD PHPStan PHPCS

License

GitLab 提供了发送多个事件的 webhooks 选项,这些事件可用于不同的目的。此包负责接收、验证和存储 webhook 数据。接收后,将派发一个事件,您可以使用该事件来处理适合您应用程序的数据。

安装

  1. 您可以通过 composer 安装此包

    composer require tjvb/gitlab-webhooks-receiver-for-laravel
    
  2. 您可以使用以下命令发布和运行迁移

php artisan vendor:publish --provider="TJVB\GitLabWebhooks\GitLabWebhooksServiceProvider" --tag="migrations"
php artisan migrate
  1. 监听 \TJVB\GitLabWebhooks\Events\HookStored::class 事件。该包存储 webhook 数据并派发一个事件,您可以监听 HookStored 事件并按自己的方式处理。有关事件和监听器的更多信息,请参阅 Laravel 文档

  2. 设置环境变量 GITLAB_WEBHOOK_SECRET(最常用的方法是将其设置在 .env 文件中)以获取您用于 webhook 的令牌。有关更多信息,请参阅 https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#secret-token

  3. 在 GitLab 中创建 webhook。您可以为您的项目、组或系统在 GitLab 中创建 webhook。默认 URL 为 <application.tld>/gitlabwebhook,您可以在 tjvb/gitlab-webhooks-receiver-for-laravel 配置 中更改此 URL。

  4. 可选配置包。

手动注册服务提供者。

如果您禁用了包发现,则需要将 \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)。有关更多信息,请参阅 许可文件