【问题标题】:Build Breaker Plugin with SonarQube 5.2使用 SonarQube 5.2 构建断路器插件
【发布时间】:2016-02-03 10:02:28
【问题描述】:

Build Breaker Plugin 似乎不再与 SonarQube 5.2 兼容。如果未完成声纳门或是否计划将 Build Breaker 插件更新到 5.2,是否有任何替代方案可以使 (VSO) 构建失败?

【问题讨论】:

标签: sonarqube azure-devops tfsbuild azure-pipelines


【解决方案1】:

(目前)没有任何插件会在 Quality Gate 未通过 SonarQube 5.2 时破坏构建。

但对于 SonarQube 5.3+,您可以再次使用 Build Breaker 插件。


来自邮件列表:

Breaking the build in SonarQube 5.2(2015 年 10 月 21 日)

Fabrice BellingradBuild Breaker Plugin 不适用于 SQ 5.2+。这个想法是开发一个核心功能 回答此插件先前涵盖的用例。这是 我们称之为“假设”功能 => https://jira.sonarsource.com/browse/SONAR-6763

本期SONAR-6763 计划发给SonarQube 6.X

【讨论】:

  • 请注意,发布日期可能会移动。 :)
  • 这很令人失望。我们将此作为持续集成的一部分。是否有理由删除有用的功能?
  • 我和你在一起。因此,我们不会升级到 5.2。这是构建持续集成平台时必须具备的功能!
  • SonarQube 邮件列表上有一个大讨论。结论:这将是 SonarQuibe 5.4 的核心功能
  • SonarQube 团队更改了修复版本,用于问题 SONAR-6763从 5.4 到 6.X
【解决方案2】:

您现在可以将 SonarQube Build Breaker Plugin 与 SonarQube 版本 5.3+ 一起使用。

【讨论】:

    【解决方案3】:

    在 SonarQube 5.2 中,我们找到了使用 Web Service /api/events 的替代方法。


    请求示例:

    https://<sq-host>/api/events?categories=Alert&resource=<project_key>
    

    响应示例:

    <events>
        <event>
            <id>50411</id>
            <name>Red (was Green)</name>
            <resourceKey>project_key</resourceKey>
            <category>Alert</category>
            <date>2015-09-29T22:38:44+0200</date>
            <description>New Critical issues > 0 since previous analysis (2015 Sep 23), New Major issues > 0 since previous analysis (2015 Sep 23), New issues > 0 since previous analysis (2015 Sep 23)</description>
        </event>
        ....
    </events>
    

    检测项目的 RED 状态:

    要验证 RED 状态,您需要在响应中的 events 列表中找到具有最高 id 值的 event,然后验证此事件的 name 是否从 Red 开始,如果您能找到它您将需要构建失败。

    这种验证可以在 CI 服务器上使用 SQ 步骤之后的额外命令行步骤完成,也可以从构建自动化系统(如 MavenGradle)完成。


    我们还没有在我们的项目中实施这样的解决方法,只是因为没有空闲时间,但我们会在不久的将来这样做。

    建议的解决方案只能用作解决方法,直到问题 SONAR-6763 完成。

    【讨论】:

    • 额外的命令行步骤总是在之前运行 Sonar,所以这个不能用。
    【解决方案4】:

    SonarQube 5.3 引入了一个新的Quality Gates Web Service,它可以被调用并用于中断构建。

    要为失败的 Quality Gate 中断 CI 构建,请在循环中使用 WS API 调用以等待处理完成,然后检查 Quality Gate Web 服务:

    • 调用分析的 ceTaskUrl 并检查“状态”值:
      • PENDING 或 IN_PROGRESS - 稍后再检查
      • 失败或取消 - 中断构建?
      • 成功 - 继续前进
    • 调用 Quality Gate 网络服务获取状态

    我还添加了一个issue to enhance the VSTS Tasks with an option to automatically call this service

    更新:recent PR 将此功能添加到 VSTS 任务(尚未发布)

    【讨论】:

    • 您只说“可以使用”,但也请描述如何使用
    • 请参阅我提到的链接Breaking the CI BuildVSTS Task implementation 作为示例。我认为声纳没有发布有关此的进一步文档。否则,如果您需要进一步的帮助,您应该直接询问他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多