Artifactory测试webhook报Sending a dummy Webhook failed如何排查
排查解决步骤
1. 首先修正Webhook地址格式错误
你当前填写的Webhook URL存在明显语法问题:https:///generic-webhook-trigger/invoke?token=123 协议头后连续三个斜杠,缺失了ngrok分配的公网域名段,请求根本无法路由到正确的服务地址,404是必然结果。
- 打开ngrok运行终端,复制Forwarding行对应的公网HTTPS地址,新版ngrok免费版默认分配的域名格式类似
https://xxxx-xx-xx-xxx.ngrok-free.app - 拼接完整Webhook地址,格式为
https://<复制到的ngrok域名>/generic-webhook-trigger/invoke?token=123,注意域名和路径之间仅保留一个斜杠,不要多写分隔符。
2. 核对Jenkins侧插件配置
- 进入目标流水线的配置页面,在「构建触发器」板块确认已勾选Generic Webhook Trigger选项
- 核对插件配置中填写的Token值,和URL中
token=后的参数值完全一致,注意区分大小写、不要带多余空格 - 暂时关闭插件里配置的分支过滤、请求参数校验、触发条件规则,全量放开权限先测通链路,后续再加限制规则。
3. 解决ngrok的转发拦截问题
免费版ngrok默认存在两层拦截,很容易导致Webhook请求异常:
- 确认ngrok转发端口和Jenkins监听端口一致,Jenkins默认监听8080端口,正确启动命令为
ngrok http 8080,不要写错转发端口 - 启动ngrok时添加参数跳过默认的浏览器警告拦截:
ngrok http 8080 --response-header-add "ngrok-skip-browser-warning:true";也可以在Artifactory的Webhook自定义请求头配置中,添加键值对ngrok-skip-browser-warning: true,避免请求被ngrok拦截返回异常页面。
4. 本地自测链路连通性
改完配置不要直接用Artifactory的测试按钮,先本地验证全链路是否正常:
- 直接在本地浏览器访问拼接完成的完整Webhook地址,如果返回包含
"status":"ok"的JSON内容,说明ngrok到Jenkins的链路已经打通 - 如果浏览器访问仍返回404,打开Jenkins系统日志(路径:Manage Jenkins > System Log > All Jenkins Logs),搜索是否存在
/generic-webhook-trigger路径的访问记录,确认Jenkins侧是否收到请求 - 如果Jenkins日志无相关请求记录,打开ngrok本地监控面板(默认地址为
http://localhost:4040),查看所有经过ngrok的请求明细,确认请求路径是否正确、是否成功转发到本地Jenkins端口。
5. 核对Artifactory侧Webhook配置
- 创建Webhook时先选择全量触发事件测试,不要只选单一事件避免触发条件不匹配
- 暂时关闭Webhook的Secret签名校验选项,测通链路后再开启签名校验避免拦截
- 如果测试仍失败,查看Artifactory系统日志中对应Webhook的请求记录,确认请求的返回状态码、响应内容,定位具体拦截点。
内容的提问来源于stack exchange,提问作者Hyperion
相关产品推荐
相关产品推荐

