欢迎访问Sonar Source中文网站!
语言选择: ∷ 

SonarQube 与 Bitbucket Server 的集成使您可以维护 Bitbucket Server 存储库中的代码质量和安全性。

发布时间:2024-03-05浏览次数:17

SonarQube 与 Bitbucket Server 的集成使您可以维护 Bitbucket Server 存储库中的代码质量和安全性。

通过这种集成,您将能够:

  • 导入 BitBucket Server 存储库:将 Bitbucket Server 存储库导入 SonarQube 以轻松设置 SonarQube 项目。

  • 向拉取请求报告您的 Quality Gate 状态(从Developer Edition开始 ):直接在 Bitbucket Server 中查看您的 Quality Gate 和代码指标结果,以便了解合并更改是否安全。

先决条件

  • 与 Bitbucket Server 集成至少需要 Bitbucket Server 版本 5.15。

  • 您已在 Administration  >  Configuration  >  General Settings > General中设置了 SonarQube Server 基本 URL

分支分析

Community Edition 不支持多个分支的分析,因此您只能分析您的主分支。从 Developer Edition开始,您可以分析多个分支和拉取请求。

将 Bitbucket 服务器存储库导入 SonarQube

设置将 BitBucket Server 存储库导入到 SonarQube 中,您可以轻松地从 Bitbucket Server 存储库创建 SonarQube 项目。如果您使用的是 Developer Edition 或更高版本,这也是添加拉取请求修饰的第一步。

要将 Bitbucket 存储库导入 SonarQube,您只能拥有一种 Bitbucket 全局配置,包括 Bitbucket Server 和 Bitbucket Cloud。有关更多信息,请参阅 下面的配置多个 DevOps 平台实例 部分。

要设置 BitBucket Server 存储库的导入:

  1. 设置全局 DevOps 平台集成设置

  2. 添加个人访问令牌以导入存储库

设置您的全球 DevOps 平台集成设置

要设置全局 DevOps 平台集成设置,请导航到 Administration > Configuration > General Settings > DevOps Platform Integrations,选择 Bitbucket 选项卡,然后选择 Bitbucket Server 作为要配置的变体。从此处指定以下设置:

  • 配置名称 (仅限企业版和数据中心版):用于在项目级别标识 Bitbucket Server 配置的名称。使用简洁且易于识别的内容。

  • Bitbucket 服务器 URL:您的实例 URL。例如,  https://bitbucket-server.your-company.com

  • 个人访问令牌:Bitbucket Server 用户帐户用于装饰拉取请求。我们建议使用具有管理员权限的专用 Bitbucket Server 帐户。您需要  此帐户的 个人访问令牌,并对 将分析的存储库具有读取权限。管理员可以在Administration > Configuration > Encryption中加密此令牌  有关详细信息,请参阅 “安全”页面 的 “设置加密”部分。此个人访问令牌用于向拉取请求报告您的质量门状态。在下一部分中,您将被要求提供另一个个人访问令牌来导入项目。

添加个人访问令牌以导入存储库

设置全局设置后,您可以通过单击 项目 主页右上角的 添加项目按钮 并选择 Bitbucket从 Bitbucket Server 添加项目。

然后,系统会要求您从您的用户帐户提供个人访问令牌,该令牌 Read 具有项目和存储库的权限。该令牌将存储在 SonarQube 中,并且可以随时在 Bitbucket Server 中撤销。

保存您的个人访问令牌后,您将看到可以设置并添加到 SonarQube 的 Bitbucket Server 项目列表。以这种方式设置项目还会设置拉取请求装饰的项目设置。

向 Bitbucket 服务器报告您的质量门状态

如上一节所示,设置 SonarQube 以导入 Bitbucket Server 存储库后,SonarQube 可以将质量门状态和分析指标直接报告给 Bitbucket Server 拉取请求。

为此,请选择 项目 主页右上角的 添加项目按钮,然后 从下拉菜单中 选择 Bitbucket,从 Bitbucket 添加项目。

然后,按照 SonarQube 中的步骤分析您的项目。SonarQube 会自动设置在拉取请求中显示质量门所需的项目设置。

要在拉取请求中报告质量门状态,需要对您的代码运行 SonarQube 分析。您可以在Pull 请求分析页面找到 Pull 请求分析所需的其他参数  。

如果您手动创建项目或将质量门报告添加到现有项目,请参阅以下部分。

报告手动创建或现有项目中的质量门状态

SonarQube 还可以向 Bitbucket Server 报告现有项目和手动创建项目的质量门状态。按照上面将Bitbucket Server 存储库导入 SonarQube部分所示更新全局设置后 ,请在Project Settings > General Settings > DevOps Platform Integration 中设置以下项目设置 

  • 配置名称:与您的 DevOps 平台实例对应的配置名称。

  • 项目密钥:项目密钥是 BitBucket Server 存储库 URL 的一部分  (.../projects/<key>/repos/<slug>/browse).

  • 存储库 SLUG:存储库 SLUG 是 BitBucket Server 存储库 URL 的一部分(.../projects/<key>/repos/<slug>/browse).

高级配置

报告单一存储库中拉取请求的质量门状态

从Enterprise Edition开始,支持在 Mono 存储库设置中报告质量门状态以拉取请求 

在单声道存储库设置中,多个 SonarQube 项目(每个项目对应于单声道存储库中的一个单独项目)都绑定到同一个 Bitbucket Server 存储库。您需要设置作为 mono 存储库一部分的每个 SonarQube 项目来报告您的质量门状态。

您需要手动设置作为 Mono 存储库一部分的项目,如 上面报告手动创建或现有项目中的质量门状态 部分所示。您还需要 在Project Settings > General Settings > DevOps Platform Integration中将Enable mono 存储库支持设置设置 为 true  

设置项目设置后,通过调整分析范围并将项目名称传递给扫描仪来确保分析正确的项目。请参阅以下部分了解更多信息。

确保分析正确的项目

您需要调整分析范围以确保 SonarQube 不会分析 Mono 存储库中其他项目的代码。为此,请 在“项目设置” > “分析范围” 中为您的项目 设置源文件包含 ,其模式仅包含相应文件夹中的文件。例如,添加  到包含内容将仅包含  文件夹中的代码以供分析。 有关缩小分析范围的更多信息,请参阅分析范围页面 。./MyFolderName/**/*MyFolderName

将项目名称传递给扫描仪

由于 Mono 存储库的性质,SonarQube 扫描仪可能会将 Mono 存储库的所有项目名称读取为相同的。为了避免多个项目同名,您需要将 sonar.projectName 参数传递给扫描仪。例如,如果您使用 Maven 扫描器,您将通过 mvn sonar:sonar -Dsonar.projectName=YourProjectName.

配置多个DevOps平台实例

SonarQube 可以向多个 DevOps 平台实例报告您的质量门状态。为此,您需要为每个 DevOps 平台实例创建一个配置,并将该配置分配给适当的项目。

  • 作为 Developer Edition的一部分,您可以为每个 DevOps 平台创建一个配置。

  • 从 Enterprise Edition开始,您可以为每个 DevOps 平台创建多个配置。 

链接问题

将质量门状态添加到拉取请求时,各个问题将自动链接到其 SonarQube 对应问题。为了使其正常工作,您需要正确设置实例的 服务器基本 URL  (管理>配置>常规设置>常规>常规)。否则,链接将默认为 localhost.

当质量门失败时防止拉取请求合并

设置拉取请求分析后,如果拉取请求未通过质量门,您可以阻止合并拉取请求。去做这个:

  1. 在 Bitbucket Server 中,导航到 存储库设置>代码见解

  2. 添加  名为的 必需报告com.sonarsource.sonarqube

  3. 选择 必须通过 作为 必需状态

  4. 选择 不能有任何注释 作为 注释要求


微信扫码微信扫码 关注我们

  • 24小时咨询热线180-210-69380

  • 移动电话180-210-69380

Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图