jenkins - 在使用 docker 容器 Sonnar Scanner 时使用 Jenkins 管道中的 SonarQube 分析代码
问题描述
我想对 git 存储库代码执行 SonarQube 分析,并且我想使用 Docker Container 中的 SonarScanner,而不是 Jenkins 配置中的 SonarScanner。
我试图创建这个管道:
pipeline {
agent { docker { image 'emeraldsquad/sonar-scanner:latest' } }
stages {
stage('build && SonarQube analysis') {
steps {
withSonarQubeEnv('sonar.tools.devops.****') {
sh 'sonar-scanner \\ -Dsonar.projectKey=myProject \\ -Dsonar.sources=./src \\'
}
}
}
stage("Quality Gate") {
steps {
timeout(time: 1, unit: 'HOURS') {
// Parameter indicates whether to set pipeline to UNSTABLE if Quality Gate fails
// true = set pipeline to UNSTABLE, false = don't
// Requires SonarScanner for Jenkins 2.7+
waitForQualityGate abortPipeline: true
}
}
}
}
}
在阶段构建和 SonarQube 分析中构建失败,构建输出:
Injecting SonarQube environment variables using the configuration: sonar.tools.devops.*****
[Pipeline] {
[Pipeline] sh
+ sonar-scanner ' -Dsonar.projectKey=myProject' ' -Dsonar.sources=./src' '\'
ERROR: Unrecognized option: -Dsonar.sources=./src
INFO:
INFO: usage: sonar-scanner [options]
INFO:
INFO: Options:
INFO: -D,--define <arg> Define property
INFO: -h,--help Display help information
INFO: -v,--version Display version information
INFO: -X,--debug Produce execution debug output
解决方案
我会尝试删除参数之间的双反斜杠:
sh 'sonar-scanner -Dsonar.projectKey=myProject -Dsonar.sources=./src'
反斜杠转义了不会被 shell 截断并添加到参数名称中的空格。
推荐阅读
- node.js - 是否使用 exec() 执行猫鼬?
- ios - PDF 编辑器/在 SwiftUI 中绘制 PDF
- python - 刮取无限滚动雅虎财经历史数据
- javascript - 如何在 setState 之后在 React 中强制立即更新 DOM(即提交)?
- bash - Bash 将字符串解析为一个参数而不是两个
- python - 如何正确对齐 matplotlib 直方图中的数据?
- c# - 用不同的表解析多个 html 文档:O
- google-cloud-platform - GCP 定价 API 没有 N2、M2、C1 等计算实例的数据
- reactjs - VideoTexture 不使用 react-three-fiber
- java - 使用 Java8 截断动态值