繁体   English   中英

如何从詹金斯管道中选择声纳质量门?

[英]How to select sonarqube quality gate from jenkins pipeline?

我已经在jenkins中配置了sonarqube服务器。 在sonarqube中,我有不同的质量门,每种质量门都有不同的条件。 我有多个詹金斯管道工作。 如何从詹金斯管道中选择声纳质量门。

对于单独的工作,我可以从詹金斯管道代码中选择特定的质量门来检查和分析我的代码。

与其从sonarqube中选择质量门,不如从詹金斯管道代码中选择我的sonarqube质量门。

任何帮助

谢谢

SonarQube提供了一个REST API,可用于从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}]"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM