将 Jenkins 的 SonarQube 分析结果的截图/PDF 发布到 Confluence

问题描述

我有一个 Jenkins 工作,每当 Bitbucket 存储库发生任何更改时,它都会对从 Bitbucket 存储库中提取代码调用 SonarQube 分析。目前,我可以使用 Confluence Publisher 插件将构建作业的 URL 作为评论发布到 Confluence。

我想知道是否有任何方法可以使用 Jenkins 截取 SonarQube 分析报告(如在 SonarQube Web UI 中)并将其直接发布到 Confluence? (这样用户就不需要通过URL去到具体的Jenkins build job,然后获取SonarQube分析报告的URL,并导航到页面查看报告)

谢谢。

解决方法

您可以从 Jenkins 向 SonarQube REST API(5.3 及更高版本)发送 curl 请求,而不是使用屏幕截图,以便在上传和分析代码后从质量门获取项目状态。您可能想要使用的端点是:/api/qualitygates/project_status?prjectKey=<projectKey>&branch=<branch>

根据 Web API 文档:

获取项目或 Compute Engine 任务的质量门状态。 必须提供“analysisId”、“projectId”或“projectKey” 返回的不同状态是:OK、WARN、ERROR、NONE。当没有与分析关联的质量门时,返回 NONE 状态。 如果未找到或不存在与任务关联的分析,则返回 HTTP 代码 404。 需要以下权限之一: '管理系统' 对指定项目的“管理”权限 '浏览'指定项目

获得这些结果后,您可以在 Confluence 中创建一个 Jenkins 用户,并让 Jenkins 发送 POST request 以使用获得的结果创建页面或评论。