Сбой проверки качества ворот Sonarqube в трубопроводе Jenkins - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в jenkins трубопроводном скрипте и сонаркебе. было бы здорово, если бы я мог помочь с вопросом ниже. Я хочу провалить декларативную конвейерную работу Jenkins, когда не проходит проверка качества Согласно документации гидролокатора (https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header -6 ), я пробовал использовать два сценария ниже, но оба, похоже, не работают и дают ошибки. Анализ sonarqube работает нормально, но не проходит проверку качества. Я создал webhook в sonarserver, который возвращает вывод json. Не уверен, что мне здесь не хватает. Версия I, использующая версию Sonrscanner - 3.0.0.702

сценарий 1:

Получение ошибки «Неверный параметр« abortPipeline », вы имели в виду« ноль »?» при запуске ниже кода. Я saprated с

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:

Получение ошибки «Invalid JSON String». Ниже анализа идет до «test2» и далее не читается статус waitForQualityGate (). Пожалуйста, порекомендуйте. Я поставил ворота качества сценария в стадию сапарата, но они по-прежнему не работают с той же ошибкой.

1 Ответ

0 голосов
/ 10 апреля 2020

Вы можете попробовать приведенный ниже код как обходной путь.

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.')
                    }
...