It seems like the Build Breaker Plugin is no longer compatible with SonarQube 5.2. Is there any alternative to have a (VSO) build fail if a Sonar gate is not fulfilled or are there plans to update the Build Breaker Plugin to 5.2?
4 回答
当 Quality Gate 未通过SonarQube 5.2时,(目前)没有任何插件会破坏构建。
但是对于 SonarQube 5.3+,您可以再次使用Build Breaker插件。
从邮件列表:
打破 SonarQube 5.2 中的构建(2015 年 10 月 21 日)
Fabrice Bellingrad: SQ 5.2+ 将无法使用Build Breaker 插件。这个想法是开发一个核心功能来回答这个插件之前涵盖的用例。这就是我们所说的“假设”功能 => https://jira.sonarsource.com/browse/SONAR-6763
此问题SONAR-6763计划用于SonarQube 6.X。
您现在可以将SonarQube Build Breaker Plugin与 SonarQube 版本 5.3+ 一起使用。
在 SonarQube 5.2 中,我们找到了使用 Web 服务/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 状态,您需要在响应列表中找到event
最高id
值events
,然后验证name
此事件的开始时间Red
,如果找到它,则需要构建失败。
这种验证可以在 CI 服务器上使用 SQ 步骤之后的附加命令行步骤完成,也可以从Maven或Gradle等构建自动化系统完成。
我们还没有在我们的项目中实现这样的解决方法,只是因为没有空闲时间,但我们会在不久的将来这样做。
在解决问题SONAR-6763之前,建议的解决方案应仅用作解决方法。
在 SonarQube 5.3 中引入了一个新的Quality Gates Web 服务,它可以被调用并用于中断构建。
要为失败的 Quality Gate 中断 CI 构建,请在循环中使用 WS API 调用以等待处理完成,然后检查 Quality Gate Web 服务:
- 调用分析的 ceTaskUrl 并检查“状态”值:
- PENDING 或 IN_PROGRESS - 稍后再检查
- 失败或取消 - 破坏构建?
- 成功——前进
- 调用 Quality Gate 网络服务获取状态
我还添加了一个问题来增强 VSTS 任务,并提供自动调用此服务的选项。
更新:最近的PR将此功能添加到 VSTS 任务(尚未发布)