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 没发」「公网端点没收到」与「本地转发断了」,按固定顺序排查。

打开指南 ->

建议阅读顺序

  1. 如何在本地测试 GitHub Webhook — 先搭好捕获与转发
  2. 如何验证 GitHub Webhook 签名 — 载荷已通时再上 HMAC
  3. GitHub Webhook 没有投递 — 某刻起再也收不到时用这篇

相关产品页

常见问题

应该先测 ping 还是真实 push?

先 ping:确认 URL 可达、配置无误,再引入真实事件载荷的复杂度。ping 通过后,再触发 push 或 pull_request。

仓库 Webhook 与组织 Webhook 有什么区别?

仓库级只针对单个仓库;组织级覆盖组织下所有仓库。载荷结构相近,但组织级会多带仓库标识等字段。

能用这些指南调试 GitHub App Webhook 吗?

可以。投递与签名模型一致;主要区别是 URL 与密钥在应用设置里配置,而不是仓库设置。

一个处理器里多种事件类型怎么写?

读取 X-GitHub-Event 判断类型,再分发到不同处理函数。本地测试篇里有完整示例思路。

相关文档