【问题标题】:How to forcibly set a quality gate on first run of a sonarqube project如何在首次运行 sonarqube 项目时强制设置质量门
【发布时间】:2018-07-13 03:55:25
【问题描述】:

我使用的是 SonarQube 版本 6.7.3(内部版本 38370)。我没有使用新的分支支持。

我正在尝试实现拉取请求的自动构建,将 BitBucket 和 Jenkins 与 SonarQube 集成。因为我没有使用新的分支支持,所以我设置了“sonar.branch”而不是“sonar.branch.name”。因此,我为拉取请求获得了一个单独的项目。没关系,因为当拉取请求分支被删除(合并时)时,我有删除 SonarQube 项目的自动化功能。

无法正常工作的是,拉取请求 SonarQube 项目有时会在首次创建时分配错误的质量门。事后不得不修改它是不可接受的。如果分配了错误的质量门,并且未遵守正确的阈值,则拉取请求可能会被标记为可合并,即使它违反了我们的质量指南。

我知道所需质量门的名称。是否有我可以在构建中设置的 Sonar 属性(使用 Maven 插件),这将确保生成的项目具有正确的质量门?

如果无法在初始扫描中包含此信息,是否可以在运行扫描之前调用 SonarQube REST api,以确保创建项目,并为其设置质量门,然后运行扫描?

我找不到最新版本的 REST api 文档。

我注意到 https://docs.sonarqube.org/pages/viewpage.action?pageId=2752810#WebService/api/qualitygates-AssociateaProjecttoaQualityGate ,但这似乎已经过时了。该页面有一个指向新文档的链接,但我没有看到任何关于 REST api 的描述。

【问题讨论】:

  • 无法从属性/参数设置质量门。您可以在自己的服务器上检查当前的 api 文档,例如:server_name:9000/web_api 从这里检查两个答案:stackoverflow.com/q/36347106/7225096
  • 您可以在“?”下找到其余 api 的最新文档。 SQ首页图标(api/qualitygates/select)

标签: sonarqube


【解决方案1】:

您可以使用api/qualitygates/select 服务:

将项目与质量门相关联。 必须提供“projectId”或“projectKey”。 自 6.1 起,项目 id 作为数值已被弃用。请使用类似于“AU-TpxcA-iU5OvuD2FLz”的 id。 需要“管理质量门”权限。

参数:

  • gateId(必填)- 质量门 id;例如:1
  • projectId(可选)- 项目 id(项目 id 作为数字值,自 6.1 起已弃用);例如:AU-Tpxb--iU5OvuD2FLy
  • projectKey(可选)- 项目密钥;例如:my_project

您应该按顺序执行以下步骤:

  1. 创建项目api/projects/create
  2. 将其与质量门关联api/qualitygates/select
  3. 将其与质量配置文件关联api/qualityprofiles/add_project
  4. 运行分析

【讨论】:

    猜你喜欢
    • 2021-05-06
    • 2017-01-24
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2016-12-05
    • 2015-07-05
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多