3.0 KiB
3.0 KiB
🔧 SonarQube Scanner 工具声明修复指南
🔍 问题分析
从 Jenkins 错误信息可以看出:
Invalid tool type "sonarRunnerInstallation".
Valid tool types: [..., hudson.plugins.sonar.SonarRunnerInstallation, ...]
问题根源:
- ❌ 错误:
sonarRunnerInstallation 'sonarQube'
- ✅ 正确:需要在 pipeline 中使用
tool
方法动态获取
✅ 正确的解决方案
方案 1:使用 tool 方法(推荐)
stage('代码质量扫描') {
steps {
script {
withSonarQubeEnv('sonarQube') {
// 动态获取SonarQube Scanner工具
def scannerHome = tool name: 'sonarQube', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
sh """
${scannerHome}/bin/sonar-scanner \\
-Dsonar.projectKey=\${PROJECT_KEY} \\
-Dsonar.sources=.
"""
}
}
}
}
方案 2:PATH 方式(如果 Scanner 已在 PATH 中)
stage('代码质量扫描') {
steps {
script {
withSonarQubeEnv('sonarQube') {
sh '''
sonar-scanner \\
-Dsonar.projectKey=${PROJECT_KEY} \\
-Dsonar.sources=.
'''
}
}
}
}
方案 3:手动路径查找(备用方案)
sh '''
# 查找Scanner路径
SCANNER_PATH=""
for path in \
"/var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonarQube/bin/sonar-scanner" \
"$(which sonar-scanner 2>/dev/null)"; do
if [ -f "$path" ]; then
SCANNER_PATH="$path"
break
fi
done
if [ -n "$SCANNER_PATH" ]; then
"$SCANNER_PATH" -Dsonar.projectKey=${PROJECT_KEY}
else
echo "❌ 未找到SonarQube Scanner"
fi
'''
🎯 最佳实践
- 不要在 tools 块中声明 SonarQube Scanner
- 使用 tool 方法动态获取工具路径
- 提供备用方案以提高可靠性
- 在环境检查阶段验证工具可用性
🔧 Jenkins 配置要求
确保 Jenkins 中正确配置:
-
Global Tool Configuration:
SonarQube Scanner ├─ 名称: sonarQube ├─ 自动安装: ✅ └─ 版本: SonarQube Scanner 7.1.0.4889
-
System Configuration:
SonarQube servers ├─ 名称: sonarQube ├─ 服务器URL: http://your-sonar-server:9000 └─ 认证Token: 配置在Credentials中
📊 性能优化效果
修复前 | 修复后 |
---|---|
语法错误,构建失败 | 构建成功 |
无法使用缓存工具 | 使用 Jenkins 管理的缓存工具 |
重复下载(7 分钟) | 快速启动(30 秒) |
通过这个修复,你的 SonarQube Scanner 将正确使用 Jenkins 的工具管理系统,避免重复下载问题。