Jenkins执行Node.js项目SonarQube代码覆盖率检测配置及报错咨询
sonar-project.properties 存放路径说明
正确存放位置为Jenkins作业对应工作目录/var/lib/jenkins/workspace/$JOB_NAME/下,也就是你的Node.js项目根目录,和package.json文件同级,建议直接提交到项目代码仓库的根目录,Jenkins拉取代码后会自动加载该配置。
不要将该文件存放在sonar-scanner安装根目录,sonar-scanner运行时默认读取当前执行工作目录下的该配置文件,放在项目根目录刚好匹配Jenkins作业默认的工作路径。
报错排查
1. sonar-scanner 可执行文件未找到报错
报错信息:/var/lib/jenkins/workspace/demosonar@tmp/durable-f32cf5e2/script.sh: 1: /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/sonardemo/bin/sonar-scanner: not found
该报错原因是你在pipeline中调用的sonar-scanner路径不存在,错误地将sonar-scanner的路径绑定到了Node.js工具的安装目录下。按以下步骤修复:
- 优先使用Jenkins官方SonarScanner插件管理扫描器,在「全局工具配置」中添加SonarScanner安装项,不要手动指定路径
- pipeline中通过
tool指令获取正确的scanner路径再执行,示例代码:
stage('Sonar代码扫描') { steps { script { // 引号内为全局工具配置中你设置的SonarScanner名称 def scannerHome = tool 'SonarScanner' sh "${scannerHome}/bin/sonar-scanner" } } }
- 若你手动安装了sonar-scanner,直接在Jenkins服务器执行
which sonar-scanner获取正确可执行路径,替换pipeline中错误的路径即可。
2. 找不到report-task.txt警告
警告信息:WARN: Unable to locate ‘report-task.txt’ in the workspace. Did the SonarScanner succeed?
该警告是sonar-scanner执行失败的连锁问题:scanner成功执行后才会生成report-task.txt文件存储扫描结果信息,扫描器本身运行失败自然不会生成该文件。修复上述sonar-scanner执行问题后,该警告会自动消失。
内容的提问来源于stack exchange,提问作者Mohan Balakrishnan

