为何Github Webhook投递列表为空但仍有代码推送操作?
Github Webhook无投递记录排查要点(Jenkins场景)
针对你遇到的「代码推送后Github Webhook投递列表为空,curl测试Jenkins可接收,Webhook激活且订阅推送事件,测试API返回204但无记录」的问题,按以下方向排查:
1. 核对Webhook的分支过滤规则
检查Webhook的「Which events would you like to trigger this webhook?」配置:
- 确认已勾选Push events,且未设置过于严格的分支过滤(比如默认仅监听
main/master分支,但你推送的是其他分支)。如果设置了分支匹配规则,确保你推送的分支符合规则(比如规则是release/*,但你推的是feature/*)。
2. 验证Webhook的Secret一致性
如果Webhook配置了Secret,务必确认Github侧填写的Secret和Jenkins的Github插件中配置的完全一致:
- 一旦Secret不匹配,Github会静默丢弃推送事件,不会生成投递记录,但测试API可能仍返回204(因为测试请求的校验逻辑不同)。
3. 检查组织级别的Webhook限制
如果是组织仓库,排查组织设置中的Webhook限制:
- 查看组织是否开启了IP白名单,确保Github的IP段未被拦截(Github的Webhook请求来自其官方IP范围)。
- 确认组织是否强制所有Webhook使用统一代理或Secret,导致仓库级的Webhook配置被覆盖。
4. 确认Webhook的实际状态
即使Webhook显示「Active」,也可能因之前的多次请求失败被Github静默禁用:
- 查看Webhook页面顶部是否有「Disabled due to repeated failures」的提示,若有,手动重新激活并检查网络连通性。
5. 排查网络层面的静默拦截
虽然你用curl测试成功,但curl是从本地发起的,而Github的Webhook请求来自其公网IP:
- 检查Jenkins服务器的防火墙、WAF、反向代理是否拦截了Github的IP请求。可以在Jenkins服务器上抓包,验证是否收到Github的Webhook请求。
6. 尝试重建Webhook
如果以上都没问题,可能是Github后台的缓存或Webhook配置异常:
- 删除当前Webhook,重新创建一个,配置相同的URL、事件和Secret,再测试代码推送。
内容的提问来源于stack exchange,提问作者Patlatus
相关产品推荐
相关产品推荐

