jenkins - 如何从詹金斯管道中选择声纳质量门?
问题描述
我已经在 jenkins 中配置了 sonarqube 服务器。在 sonarqube 中,我有不同的质量门,每个质量门都有不同的条件。我有多个詹金斯管道工作。如何从 jenkins 管道中选择 sonarqube 质量门。
对于单独的工作,我可以从 jenkins 管道代码中选择特定的质量门来检查和分析我的代码。
我如何从 jenkins 管道代码中选择我的 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}]"
推荐阅读
- php - 使用 PayPal Checkout API,收款人被忽略
- android - 在参数中发送整个数据类实例
- android - 如何将 Flutter 应用程序发送给客户端进行测试
- powerbi - 创建员工经理关系表
- html - 在引导程序 4 中垂直对齐不同大小的徽标图像
- javascript - 使用primeng动态对话框打开全屏模式
- php - 如何通过更改其中的json来覆盖文件?
- python - 如何在 Python Quart 路由处理程序中使用日志记录?
- audio - FFmpeg 延迟和混合音频流,同时保持整体音量不变
- microsoft-graph-api - OData lambda,any,带逻辑运算符,and 不起作用