GitHub Webhook对接Jenkins失败:空指针异常求助
针对你遇到的Push.getRepository()返回null导致的空指针异常,可按以下步骤排查解决:
验证Webhook Payload完整性
登录Smee的Web界面,查看接收到的GitHub Webhook Payload,确认JSON结构中存在完整的repository节点。如果Payload缺失该字段,需检查GitHub Webhook的配置:确保事件类型选择了Push,并且没有设置Payload过滤规则。更新Jenkins GitHub插件
旧版本的GitHub插件可能存在Payload解析bug。进入Jenkins插件管理页面,找到GitHub Integration和GitHub API插件,更新到最新版本后重启Jenkins。配置GitHub访问凭据
在Jenkins的全局凭据中添加GitHub个人访问令牌(需包含repo权限),并在GitHub插件的全局配置中关联该凭据。私有仓库的Webhook事件需要Jenkins验证仓库权限,缺失有效凭据可能导致插件无法正确解析仓库信息。检查Smee转发配置
确认Smee客户端启动命令的目标URL为Jenkins的GitHub Webhook端点(通常是http://你的Jenkins地址/github-webhook/),避免拼写错误。同时不要添加任何修改Payload的参数,确保原始Payload完整转发。手动测试Payload
将Smee接收到的完整Payload保存为payload.json,用curl命令手动发送到Jenkins:curl -X POST -H "Content-Type: application/json" -d @payload.json http://你的Jenkins地址/github-webhook/如果手动发送仍报错,说明问题出在Jenkins插件或任务配置;如果发送正常,重新启动Smee客户端排查转发问题。
检查Jenkins任务配置
确保任务中配置的GitHub仓库URL与Webhook所属仓库完全一致,并且启用了GitHub hook trigger for GITScm polling触发选项。
内容的提问来源于stack exchange,提问作者user10651076

