Monorepo PR触发AWS CodeBuild的SonarQube分析提示已有任务运行如何解决
结论
清理日志存储路径不能解决该报错问题。
报错核心原因
SonarQube服务端默认限制同一个项目的同一个分析目标(分支、PR)同时仅能运行一个分析任务:分析启动时服务端会写入对应的状态锁,只有任务正常执行完成、或主动取消后锁才会释放。如果之前的分析任务异常中断(例如AWS CodeBuild中途被终止、网络请求超时、服务端处理卡顿),状态锁会一直残留,后续提交的分析请求就会返回Another SonarQube analysis is already in progress for this project报错。
为什么清理日志路径无效
清理日志存储路径仅会删除CI运行节点本地的sonar-scanner临时分析产物、运行日志、本地缓存,不会修改SonarQube服务端存储的任务状态锁记录,因此无法解除服务端的并行分析限制。
可行的解决方案
- 手动释放残留锁:进入对应SonarQube项目的「项目设置 > 分析管理」页面,找到状态为「进行中」的异常任务,点击取消即可直接释放锁,后续分析任务即可正常运行。
- 适配monorepo架构调整配置:如果你的monorepo所有子包共用同一个SonarQube项目key,PR触发时多个子包同时提交分析请求会触发并行限制,建议给每个子包分配独立的项目key,或调整项目配置参数
sonar.analysis.maxParallel放宽并行分析数量限制。 - 配置CI去重逻辑:在AWS CodeBuild中添加触发规则,同一个PR的新提交如果前一次构建还在运行,自动终止前一次构建,避免重复提交分析任务。
- 自动处理残留锁:在sonar-scanner运行前先调用SonarQube Web API
api/ce/cancel取消同个分析目标下的进行中任务;8.9及以上版本的SonarQube也可以直接添加运行参数sonar.analysis.force=true强制抢占分析锁。
内容的提问来源于stack exchange,提问作者Gabriela Maria Pacheco da Roch
相关产品推荐
相关产品推荐

