Как выбрать качественные ворота sonarqube из трубопровода jenkins? - PullRequest
1 голос
/ 06 июня 2019

Я настроил сервер sonarqube в jenkins.В sonarqube у меня были разные качественные ворота, у каждого качественные ворота разные условия.У меня было несколько работ Дженкинса.Как выбрать ворота качества sonarqube из конвейера jenkins.

Для отдельной работы я могу выбрать определенные ворота качества из кода конвейера jenkins, чтобы проверить и проанализировать мой код.

Вместо того, чтобы выбирать ворота качества из sonarqube, как я могу выбрать мои ворота качества sonarqube из кода конвейера jenkins.

Любая помощь

Спасибо

1 Ответ

0 голосов
/ 06 июня 2019

SonarQube предоставляет API REST, который можно использовать для извлечения информации из проекта SonarQube, но вы также можете использовать его для изменения свойств в проекте SonarQube, таких как ворота качества (или профиль качества).

В процессе, который я разработал, обычно есть «базовый» проект SonarQube, у которого есть качественные ворота и профиль качества, которые я хочу установить в «производных» проектах (мы пока не используем ветки нового стиля). Итак, я сначала читаю свойства из базового проекта, а затем устанавливаю их в производный проект.

Код, подобный этому, используется для получения свойств из базового проекта:

def sonarQubeProjectName = sonarProps['sonar.motsid'] + ':' + SONAR_PROJECT_NAME
def authString = "${sonarProps['sonar.login']}:${sonarProps['sonar.password']}"

def qualityProfileResult =
    sh(returnStdout: true,
       script: "curl -s -X GET -u ${authString} \'${sonarProps['sonar.host.url']}/api/qualityprofiles/search?project=${sonarQubeProjectName}&language=java\'")
echo "qualityProfileResult[${qualityProfileResult}]"
def qualityProfileName = new JsonSlurper().parseText(qualityProfileResult).profiles[0].name
echo "qualityProfileName[${qualityProfileName}]"

def qualityGateResult   =
    sh(returnStdout: true,
       script: "curl -s -X GET -u ${authString} \'${sonarProps['sonar.host.url']}/api/qualitygates/get_by_project?project=${sonarQubeProjectName}\'")
echo "qualityGateResult[${qualityGateResult}]"
def qualityGateId   = new JsonSlurper().parseText(qualityGateResult).qualityGate.id
echo "qualityGateId[${qualityGateId}]"

А затем установить их в производный проект:

// Now associate the project with the quality gate.
def selectQualityGateResult =
    sh(returnStdout: true,
       script: "curl -s -X POST -u ${authString} \'${sonarProps['sonar.host.url']}/api/qualitygates/select?gateId=${qualityGateId}&projectKey=${projectAndBranch}\'")
echo "selectQualityGateResult[${selectQualityGateResult}]"

// Now associate the project with the quality profile.
def selectQualityProfileResult =
    sh(returnStdout: true,
       script: "curl -s -X POST -u ${authString} \'${sonarProps['sonar.host.url']}/api/qualityprofiles/add_project?language=java&qualityProfile=${qualityProfileName}&project=${projectAndBranch}\'")
echo "selectQualityProfileResult[${selectQualityProfileResult}]"
...