我们使用jenkins、sonarqube 5.5、maven和git。当开发人员创建一个新的git分支并推送它时,jenkins也会分析该分支,这样开发人员就可以在合并之前修复所有内容。为了避免这种开发分支分析与主分支分析混淆,jenkins将分支名称传递到分析中。导致sonarqube为每个分支创建一个新项目。到目前为止还可以。
但最近,我们从所有项目的一个默认质量门切换到了正在积极开发的项目和刚刚维护的项目的不同质量门。
那么,在为新的分支机构创建新项目时,我们如何告诉声纳该使用哪个质量门呢?在某些版本之前,还存在可以设置的sonar.qualitygate属性。但现在这种做法已被弃用。那么,为一个新创建的项目定义合适的质量门的新方法是什么呢?
您可以使用Sonar提供的rest api。
步骤1。创建闸门
def result = ["curl", "--user", auth, "-X", "POST", "-H", "Content-Type: application/json", "-d", "{'name':'" + qualityGateName + "'}", "https://yoursonarserver/api/qualitygates/create"].execute().text
步骤2将项目绑定到大门
["curl", "--user", auth, "-X", "POST", "-H", "Content-Type: application/json", "-d", "{'gateId':'"+qualityGateId+"','projectId':'"+projectId+"'}", "https://yoursonarserver/qualitygates/select"].execute().text
关于如何获得projectId和qualityGateId,您可以使用以下两个api
获取项目ID
String result = ["curl", "--user", auth , "-X", "GET", "-H", "Accept: application/json", "https://yoursonarserver/api/projects/index", "-d", "search=" + projectName ].execute().text
获取质量门id
def result = ["curl", "--user", auth, "-X", "GET", "-H", "Accept: application/json", "https://yoursonarserver/api/qualitygates/list"].execute().text
上面两个api将获得一个id列表,因此您需要根据项目名称解析它们。
Br,
Tim