如何处理SonarQube‘report参数缺失’报错?重启Docker是否有效?
在Concourse CI/CD流水线中突然出现SonarQube扫描失败,近期未修改Sonar相关配置,报错日志如下:
Preparing SonarQube scanner... Starting sonar-scanner (type: cli)... INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties INFO: Project root configuration file: /tmp/build/put/sonar-input/sonar-project.properties INFO: SonarQube Scanner 4.0.0.1744 INFO: Java 1.8.0_151 Oracle Corporation (64-bit) INFO: Linux 4.15.0-159-generic amd64 INFO: User cache: /root/.sonar/cache INFO: SonarQube server 7.9.1 INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent) WARN: SonarScanner will require Java 11+ to run starting in SonarQube 8.x INFO: Sensor SurefireSensor [java] (done) | time=70ms ~ INFO: Sensor JavaXmlSensor [java] INFO: Sensor JavaXmlSensor [java] (done) | time=3ms INFO: Sensor HTML [web] INFO: Sensor HTML [web] (done) | time=14ms INFO: ------------- Run sensors on project INFO: Sensor Zero Coverage Sensor INFO: Sensor Zero Coverage Sensor (done) | time=4ms INFO: Sensor Java CPD Block Indexer INFO: Sensor Java CPD Block Indexer (done) | time=81ms INFO: 55 files had no CPD blocks INFO: Calculating CPD for 44 files INFO: CPD calculation finished INFO: Analysis report generated in 91ms, dir size=696 KB INFO: Analysis report compressed in 319ms, zip size=316 KB INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 18.928s INFO: Final Memory: 32M/995M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarQube Scanner execution ERROR: The 'report' parameter is missing ERROR: ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging. ERROR in /opt/resource/out : line 251 with exit code 2
当前SonarQube Docker容器状态:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 968xxxxxxx5b bitnami/sonarqube:7.9.1 "/app-entrypoint.sh …" 9 months ago Up 8 months 0.0.0.0:80->9000/tcp docker_sonarqube_1
请问该如何处理此错误?重启SonarQube Docker容器能否解决该问题?
关于重启容器的结论
重启SonarQube Docker容器几乎无法解决这个问题。该报错是Concourse的Sonar资源在提交扫描报告时缺少report参数导致的,属于客户端(流水线/扫描器)配置或执行环节的问题,与SonarQube服务端运行状态无关。
具体排查步骤
检查Concourse流水线的Sonar资源配置
查看流水线中putSonar资源的步骤,确认是否正确指定了report参数,该参数需要指向扫描生成的报告文件路径。示例配置如下:- put: sonarqube params: report: your-task-output/sonar-report.zip同时确认任务输出目录中确实存在该报告文件,Concourse的任务容器有权限访问该路径。
启用扫描器debug日志定位问题
在Sonar扫描的任务中添加-X参数重新执行,获取更详细的日志,确认报告生成的具体路径和文件名是否符合预期,排查扫描过程中是否有隐性错误导致报告路径异常。核对
sonar-project.properties配置
尽管你提到未修改Sonar配置,仍建议核对该文件中是否存在与报告路径相关的错误配置(如sonar.report.path),确保没有误写或遗漏。验证Concourse Sonar资源插件兼容性
检查流水线使用的Concourse Sonar资源镜像版本,确认其与当前SonarQube 7.9.1版本兼容。部分旧版本资源插件可能存在参数传递逻辑的bug。手动执行验证环节
在Concourse任务中添加调试步骤,手动执行sonar-scanner命令生成报告,随后手动调用Sonar资源的/opt/resource/out脚本并传递正确的report参数,以此定位是扫描环节还是资源提交环节的问题。
内容的提问来源于stack exchange,提问作者Sachiko

