Azure DevOps执行Publish Quality Gate任务时SonarQube 400报错咨询
##[error][SQ] API GET '/api/ce/task' failed, status code was: 400
##[error][SQ] Could not fetch task for ID 'AXw8YqgBUKkK2z5OofBY'
可行诊断方向与解决方案
- 验证任务ID有效性
直接使用SonarQube管理员账号访问接口http://<你的SonarQube服务地址>/api/ce/task?id=AXw8YqgBUKkK2z5OofBY,查看返回结果。若返回任务不存在,先排查最近是否调整了Compute Engine任务的清理策略,6.7.5版本默认CE任务保留时长为30天,若被改短可能导致刚跑完的任务被提前清理;如果部署了多节点SonarQube集群,还要排查请求是否被路由到了未同步任务数据的节点;另外检查近期是否有手动清理SonarQube数据库的操作,误删ce_task表数据也会导致该问题。 - 检查Azure DevOps SonarQube扩展版本兼容性
若近期升级了Azure DevOps的SonarQube扩展,会触发该报错:SonarQube 6.7.5属于已停止维护的旧LTS版本,新版Sonar扩展已移除对6.x版本的适配,调用/api/ce/task接口时会传入旧版本不支持的参数,进而返回400状态码。回退SonarQube扩展到v4.x版本即可解决该版本兼容问题,v4.x是官方明确支持SonarQube 6.7.x的最后一个大版本。 - 排查权限与网络拦截问题
先确认流水线配置的SonarQube服务账号是否保留了访问CE任务接口的权限,近期如果调整了全局权限、服务账号权限会导致接口请求失败;另外排查是否新增了WAF、反向代理规则,/api/ce/*路径的请求被拦截或篡改参数也会返回400,可查看SonarQube服务的access.log日志确认请求参数是否完整正确。 - 临时绕过方案
若暂时无法升级SonarQube或回退扩展,可先关闭Publish Quality Gate任务的质量门不通过则终止流水线的开关,手动前往SonarQube平台查看分析结果;也可自行编写脚本调用旧版兼容的接口拉取质量门状态,替代官方扩展的校验逻辑。
内容的提问来源于stack exchange,提问作者Alejandro Herrera
相关产品推荐
相关产品推荐

