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 ),我尝试了以下两种情况,但两种情况均无法正常工作,并因错误而失败. 声纳分析工作正常,但在QualityGate检查中失败.我在sonarserver中创建了webhook,该webhook返回json输出.不知道我在这里缺少什么. 我使用Sonrscanner版本的版本-3.0.0.702
Im new to jenkins pipeline scripting and sonarqube. it would be great if I can get some help with the question below. I want to fail the Jenkins declarative pipeline job when quality gate check fails. As per sonar documentation (https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header-6), I tried with below two scenrions but both are seems not working and failing with errors. sonarqube analysis is working fine but it failing at QualityGate check. I created webhook in sonarserver which is returning json output. Not sure what Im missing here. Version I using Sonrscanner version - 3.0.0.702
得到错误参数"abortPipeline"无效,您的意思是空"吗?"在以下代码下运行时.我对
Getting error "Invalid parameter "abortPipeline", did you mean "null"?" when run below code. I saprated with
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().请指教. 我将脚本质量门置于saparate阶段,但仍然失败,并出现相同的错误.
scenario 2:
Getting error "Invalid JSON String". Below analysis, its going till the "test2" further its failing to read status waitForQualityGate(). Please advise. I put the script quality gate in saparate stage still its failing with same error.
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" }
}
}
}
推荐答案
您可以尝试以下代码作为解决方法.
You can try below code as a work around.
stage('Sonarqube Analysis') {
environment {
scannerHome = tool 'Sonar scanner'
}
steps {
withSonarQubeEnv('Sonarserver') {
sh "${scannerHome}/bin/sonar-scanner"
}
sleep time: 30000, unit: 'MILLISECONDS'
script {
sh "curl -u username:password -X GET -H 'Accept: application/json' https://alm.accenture.com/sonar/api/qualitygates/project_status?projectKey=adop:SDSPDVCR:baggagetracking > status.json"
def json = readJSON file:'status.json'
echo "${json.projectStatus.status}"
if ("${json.projectStatus.status}" == "ERROR") {
currentBuild.result = 'FAILURE'
error('Pipeline aborted due to quality gate failure.')
}
这篇关于Jenkins管道中的Sonarqube质量门状态检查失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!