GitHub Hub
GitHub Webhook:本地测试、签名与投递排查
需要本地测 GitHub 投递、核对签名,或查明仓库 Webhook 为何到不了处理器时,从这里开始。
为什么 GitHub Webhook 需要专注的工作流
GitHub 会触发大量事件类型——push、PR、部署、发布等——每种载荷形状不同。投递静默失败时,原因可能是 URL 不可达、密钥配错、框架在 HMAC 校验前改动了 raw body,或组织级 Webhook 与仓库级配置重叠。靠猜很慢。本系列把流程拆成三阶段:捕获与转发、验证签名、再排投递故障——让你始终知道下一步该看哪一层。第一次建议按顺序通读;之后可直接跳到与症状最匹配的那一篇。
如何在本地测试 GitHub Webhook
起点:接住 ping 与真实仓库事件、检查 payload,并把投递转发到本地处理器。
打开指南 -> 安全如何验证 GitHub Webhook 签名
逐步完成 HMAC-SHA256 验证:从读取 raw body 到 timing-safe 比较。
打开指南 -> 排障GitHub Webhook 没有投递
区分「GitHub 没发」「公网端点没收到」与「本地转发断了」,按固定顺序排查。
打开指南 ->建议阅读顺序
- 如何在本地测试 GitHub Webhook — 先搭好捕获与转发
- 如何验证 GitHub Webhook 签名 — 载荷已通时再上 HMAC
- GitHub Webhook 没有投递 — 某刻起再也收不到时用这篇
相关产品页
- Webhook 调试器 — 实时捕获并检查 GitHub 投递
- 本地转发 — 将流量路由到本地开发服务器
其他 Webhook 指南
常见问题
应该先测 ping 还是真实 push?
先 ping:确认 URL 可达、配置无误,再引入真实事件载荷的复杂度。ping 通过后,再触发 push 或 pull_request。
仓库 Webhook 与组织 Webhook 有什么区别?
仓库级只针对单个仓库;组织级覆盖组织下所有仓库。载荷结构相近,但组织级会多带仓库标识等字段。
能用这些指南调试 GitHub App Webhook 吗?
可以。投递与签名模型一致;主要区别是 URL 与密钥在应用设置里配置,而不是仓库设置。
一个处理器里多种事件类型怎么写?
读取 X-GitHub-Event 判断类型,再分发到不同处理函数。本地测试篇里有完整示例思路。