Jenkins 管道中的 Sonarqube 质量门状态检查失败
Sonarqube quality gate status check fail in Jenkins pipeline
我是 jenkins 管道脚本和 sonarqube 的新手。如果我能在下面的问题上得到一些帮助,那就太好了。
当质量门检查失败时,我想使 Jenkins 声明性管道作业失败。根据声纳文档 (https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header-6),我尝试了以下两个方案,但两者似乎都无法正常工作并且因错误而失败。
sonarqube 分析工作正常,但在 QualityGate 检查时失败。我在返回 json 输出的 sonarserver 中创建了 webhook。不确定我在这里缺少什么。
版本 I 使用 Sonrscanner 版本 - 3.0.0.702
场景 1:
收到错误“无效参数“abortPipeline”,您的意思是“null”吗?当 运行 下面的代码。我用
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'ALM Sonar'
}
steps {
withSonarQubeEnv('ALM Prod Sonar') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
stage("Quality Gate") {
steps {
timeout(time: 1, unit: 'HOURS') {
waitForQualityGate abortPipeline: true }
}
}
场景 2:
收到错误“无效的 JSON 字符串”。下面分析,它一直到“test2”进一步读取状态 waitForQualityGate() 失败。请指教。
我将脚本质量门放在单独的阶段仍然失败并出现相同的错误。
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'ALM Sonar'
}
steps {
withSonarQubeEnv('ALM Prod Sonar') {
sh "${scannerHome}/bin/sonar-scanner"
}
sleep time: 30000, unit: 'MILLISECONDS'
echo "test1"
script {
echo "test2"
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
echo "test3" }
}
}
}
您可以尝试使用以下代码作为解决方法。
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'Sonar scanner'
}
steps {
withSonarQubeEnv('Sonarserver') {
sh "${scannerHome}/bin/sonar-scanner"
}
if ("${json.projectStatus.status}" == "ERROR") {
currentBuild.result = 'FAILURE'
error('Pipeline aborted due to quality gate failure.')
}
我是 jenkins 管道脚本和 sonarqube 的新手。如果我能在下面的问题上得到一些帮助,那就太好了。 当质量门检查失败时,我想使 Jenkins 声明性管道作业失败。根据声纳文档 (https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header-6),我尝试了以下两个方案,但两者似乎都无法正常工作并且因错误而失败。 sonarqube 分析工作正常,但在 QualityGate 检查时失败。我在返回 json 输出的 sonarserver 中创建了 webhook。不确定我在这里缺少什么。 版本 I 使用 Sonrscanner 版本 - 3.0.0.702
场景 1:
收到错误“无效参数“abortPipeline”,您的意思是“null”吗?当 运行 下面的代码。我用
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'ALM Sonar'
}
steps {
withSonarQubeEnv('ALM Prod Sonar') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
stage("Quality Gate") {
steps {
timeout(time: 1, unit: 'HOURS') {
waitForQualityGate abortPipeline: true }
}
}
场景 2:
收到错误“无效的 JSON 字符串”。下面分析,它一直到“test2”进一步读取状态 waitForQualityGate() 失败。请指教。 我将脚本质量门放在单独的阶段仍然失败并出现相同的错误。
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'ALM Sonar'
}
steps {
withSonarQubeEnv('ALM Prod Sonar') {
sh "${scannerHome}/bin/sonar-scanner"
}
sleep time: 30000, unit: 'MILLISECONDS'
echo "test1"
script {
echo "test2"
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
echo "test3" }
}
}
}
您可以尝试使用以下代码作为解决方法。
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'Sonar scanner'
}
steps {
withSonarQubeEnv('Sonarserver') {
sh "${scannerHome}/bin/sonar-scanner"
}
if ("${json.projectStatus.status}" == "ERROR") {
currentBuild.result = 'FAILURE'
error('Pipeline aborted due to quality gate failure.')
}