问题描述: jenkins 使用 waitForQualityGate函数去获取代码质量扫描状态的时候,报错: SonarQube task ‘AYjDZLbbX-IVjE3zisqb’ status is 'IN_PROGRESS’
解决方法
1.在代码扫描完成后,sleep 30s
stage('code质量扫描') {
steps {
withSonarQubeEnv('sonar') {
container('sonar') {
sh 'sonar-scanner \
-Dsonar.projectKey=app01 \
-Dsonar.java.binaries=src \
-Dsonar.sources=.'
sh 'sleep 30'
}
}
}
}
- 获取状态的时候,尝试多几次
下面代码链接:https://blog.csdn.net/tengqingyong/article/details/123146458
script {
Integer waitSeconds = 10
Integer timeOutMinutes = 10
Integer maxRetry = (timeOutMinutes * 60) / waitSeconds as Integer
// 未通过代码检查,中断
for (Integer i = 0; i < maxRetry; i++) {
try {
timeout(time: waitSeconds, unit: 'SECONDS') {
//利用sonar webhook功能通知pipeline代码检测结果,未通过质量阈,pipeline将会fail
def qg = waitForQualityGate()
echo "${qg.status}"
if (qg.status != 'OK') {
error "Sonar quality gate status: ${qg.status}"
} else {
i = maxRetry
}
}
} catch (Throwable e) {
if (i == maxRetry - 1) {
throw e
}
}
}
}