首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sonar.Qualitygate在SonarQube5.3中不受欢迎。另一种选择是什么?

sonar.Qualitygate在SonarQube5.3中不受欢迎。另一种选择是什么?
EN

Stack Overflow用户
提问于 2016-04-01 02:38:19
回答 3查看 5.1K关注 0票数 7

上下文:在Sonar中,有一个定制的质量门,叫做“abcd”。这不是默认的质量门。在Jenkins中,我使用参数SonarQube为一组API配置了这个-Dsonar.QualityGate=abcd质量门,它运行得很好。

最近,Sonar Qube升级到5.3版。从那时起,abcd质量门就不起作用了,所有API都使用默认的质量门,而不是abcd质量门。

通过分析,我了解到sonar.QualityGate在5.3版本中是不可取的。

问题:你能告诉我另一种选择吗?我如何确保这些API集具有abcd作为质量门,而不是默认的质量门?

我更喜欢这样的解决方案,因为我可以在Jenkins上配置一些东西,因为我可以访问Jenkins,但不能使用Sonar配置。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-01 07:40:04

在运行分析时,使用参数来设置项目的质量门是不可能的。只有在UI/WS中才有可能,在那里您可以指定哪个Quality应该用于哪个项目。

有关更多信息,请参见文档:http://docs.sonarqube.org/display/SONAR/Quality+Gates

票数 4
EN

Stack Overflow用户

发布于 2017-06-06 09:32:32

您仍然可以通过Sonarqube动态创建关联门项目。

从Sonarqube实例中,转到它的/web_api URL (例如http://my-sonarqube/web_api)并检查可用操作的列表。

web_api/api/qualitygates是与质量门相关的一组操作。web_api/api/qualitygates/select是将一个门与项目关联起来所需的操作。

因此,作为废弃sonar.qualitygate的替代,您可以通过web使用手动关联,也可以通过web使用动态(和自动)关联。后一种情况是在连续集成作业(如您在此上下文中提到的Jenkins )情况下,需要动态创建链接(尤其对于分支管理有用)。

作为此操作工作的强制步骤,您需要按照关于Web的官方Sonarqube文档推荐的方法传递一些权限,例如用户令牌。

在调用sonar:sonar步骤之前,CI步骤可能是什么样子的示例:

代码语言:javascript
复制
curl -u ${sonar.password.token}: ${sonar.setqualitygate.url} \
-d "gateId=${sonar.gate.id}&projectKey=${sonar.project.key}:${planRepository.branch}"

其中:

  • sonar.password.token是您需要从Sonarqube用户管理页面为技术用户(例如,用于在组件之间建立连接的Jenkins用户)生成的令牌。
  • sonar.setqualitygate.url REST端点的URL (例如http://your.sonarqube.domain/api/qualitygates/select)
  • sonar.gate.id是门id,您可以很容易地在相关门的URL上找到它(例如,http://your.sonarqube.domain/quality_gates/show/<id>)。
  • 这里的sonar.project.keyplanRepository.branch --我们也在动态地为某个分支构建项目名称--如果您不想动态地处理分支,可以跳过这个步骤(例如,在竹类中很容易实现,在Jenkins中则比较复杂)
票数 3
EN

Stack Overflow用户

发布于 2018-04-13 08:18:47

使用A_Di提出的方法,我面临一个问题:当试图为全新的特性分支选择一个门时,Sonar抛出一个错误,说项目不存在。因此,只有在创建了项目之后,才能分配一个门。在本例中,我使用hack:在分配门之前使用Sonar手动创建一个项目,然后执行mvn声纳:声纳步骤。下面是虚拟新项目的创建:

代码语言:javascript
复制
def createNewProject(def config, def branch) {
    String projectName = new XmlSlurper().parseText(readFile('pom.xml')).name as String
    def url = "${config.sonarHost}/api/projects/create"
    sh "curl -u ${config.sonarToken}: ${url} -d 'name=${projectName}&project=${projectKey()}&branch=${branch}'"
}

下一步是为这个虚拟项目分配一个门:

代码语言:javascript
复制
def setSonarQualityGate(def config, def projectFullName, def gateId) {
    def url = "${config.sonarHost}/api/qualitygates/select"
    sh "curl -u ${config.sonarToken}: ${url} -d 'gateId=${gateId}&projectKey=${projectFullName}'"
}

只有在那之后,我才执行分析本身:

代码语言:javascript
复制
def runSonarAnalysis(def config, def branch) {
    echo "Run Sonar analysis"
    sh "mvn sonar:sonar -Dsonar.host.url=${config.sonarHost} -Dsonar.branch=${branch}"
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36347106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档