轻量、模块化、高扩展性的 GitHub Webhook 事件处理器,专为 Pull Request 和 Issue 场景设计。
Gitbby 是一个用 Ruby 编写的 Webhook 接收处理器,基于 Sinatra 框架实现。它监听来自 GitHub 的事件(如新建 PR / Issue),并立即在本地输出消息,供你接入后续自动化逻辑。
典型用途包括:
灵活性强、部署简单,是构建开发者工具链的绝佳基础设施组件。
Gitbby/
├── app/
│ ├── handlers/ # 每类事件的独立处理器
│ │ ├── issue_handler.rb
│ │ └── pull_request_handler.rb
│ └── router.rb # 路由层:按事件分发到处理器
├── main.rb # Sinatra 主程序
├── Gemfile # Ruby 依赖
└── .env # 本地配置(忽略版本控制)
git clone https://github.com/ctkqiang/Gitbby.git
cd Gitbby
bundle install
创建 .env 文件并设置 GitHub Token:
GITHUB_TOKEN=ghp_你的GitHub个人访问令牌
repo 权限(用于未来调用 GitHub API)ruby gitbby.rb
默认监听地址为:http://localhost:9292
ngrok authtoken <你的Ngrok Token>
ngrok http 9292
将得到一个公网地址(如 https://xxxxx.ngrok.io),用于 GitHub Webhook。
打开 GitHub 仓库 → Settings → Webhooks
添加新的 Webhook
Payload URL 填写:
https://<你的-ngrok-url>/githook
Content type 选择 application/json
勾选事件:
保存并测试触发 🎯
你可以在以下路径中添加或扩展业务逻辑:
app/handlers/issue_handler.rbapp/handlers/pull_request_handler.rb它们将会根据事件被自动调用,例如:
module Gitbby
class IssueHandler
def self.handle(payload)
puts "[Issue] New: #{payload['issue']['title']}"
end
end
end
将来可添加逻辑如:
| 层级 | 说明 |
|---|---|
| Sinatra 控制器 | 接收并解析 Webhook 请求 |
| Router 分发器 | 根据事件类型进行 handler 分发 |
| Handlers | 每类事件的业务处理逻辑 |
| GitHub Client | 可选,用于后续 API 操作(评论等) |
有问题欢迎提 Issue,一起打造 Ruby 世界最甜 Webhook 核心 💘
感谢您使用本项目!您的支持是开源持续发展的核心动力。
每一份捐赠都将直接用于:
✅ 服务器与基础设施维护(魔法城堡的维修费哟~)
✅ 新功能开发与版本迭代(魔法技能树要升级哒~)
✅ 文档优化与社区建设(魔法图书馆要扩建呀~)
点滴支持皆能汇聚成海,让我们共同打造更强大的开源工具!
(小仙子们在向你比心哟~)
🔵 支付宝(小企鹅在收金币哟~) |
🟢 微信支付(小绿龙在收金币哟~) |