Я смог понять это.
Я настроил экземпляр sonarcloud и проверил свою ветку и PR на соответствие правилам установки.
От Дженкинса я теперь могу сделать вызов API для сонара, чтобы получить отчет об анализе только нового кода. Исходя из этого, я могу отказаться от сборки или сохранить ее работоспособной.
В Дженкинсе я впервые запускаю обычное сканирование сонарного облака,
затем со следующим шагом я получаю результаты проверки качества:
sh "cat .scannerwork/report-task.txt"
def props = readProperties file: '.scannerwork/report-task.txt'
def sonarServerUrl = props['serverUrl'].replaceAll('https://', '')
def ceTask
def analysisId
timeout(time: 1, unit: 'MINUTES') {
waitUntil {
def response = sh(script: """
curl -v -X POST https://${SONAR}@${sonarServerUrl}/api/ce/task -d "id=${props["ceTaskId"]}"
""", returnStdout: true)
ceTask = readJSON text: response
analysisId = ceTask["task"]["analysisId"]
return "SUCCESS".equals(ceTask["task"]["status"])
}
}
def response2 = sh(script: """
curl -v -X POST https://${SONAR}@${sonarServerUrl}/api/qualitygates/project_status -d "analysisId=${analysisId}"
""", returnStdout: true)
def qualitygate = readJSON text: response2
Это оставит меня с массивом QualityGate, где я могу проверить статус, и мой последний шаг делает это:
if ("ERROR".equals(qualitygate["projectStatus"]["status"])) {
error "Quality Gate failure"
}
Это приведет к ошибке задания jenkins и будет проверять только что добавленный код с настройками правил в сонаре.