设置与 GitLab、Jenkins 和 SonarQube 的持续集成

本教程是关于 GitLab、Jenkins 和 SonarQube 之间的持续集成。 在本教程结束时,您将能够使用 Jenkins 作为持续集成器和声纳扫描器作为代码分析器在 SonarQube 查看 GitLab 存储库代码的质量报告。

使用 GitLab、Jenkins 和 SonarQube 进行持续集成设置

在我们了解如何设置持续集成 (CI) 之前,让我们先看看所涉及的组件以及它们在我们的设置中扮演的角色。

GitLab

GitLab 是一个用于协作和版本控制的开源代码托管平台。 它可以安装在您的服务器上以私下托管您的代码。 GitLab 提供类似于以下的源代码管理 (SCM) 功能 GitHub比特桶.

詹金斯

詹金斯 是一个开源的持续集成服务器。 它是一种自动化工具,可用于测试和编译您的代码,并在构建成功后将其部署到生产环境中。

这里的 Jenkins 用于从 GitLab 中拉取代码(实时,当代码被推送或合并时),构建项目代码并将结果推送到 SonarQube 进行可视化解释。

声纳

声纳 是一个开源的持续检查服务器。 它是用作代码审查质量门的工具。 它为各种编程语言提供代码分析、检测错误、安全漏洞、重复代码、注释、代码异味等的自动报告。

先决条件

本教程假设 GitLab、Jenkins 和 SonarQube 已经安装在您的 Linux 系统上。 这些工具的安装不是我们这里的重点。

现在您已经了解了所涉及的工具及其角色,让我们看看如何设置我们的持续集成

第 1 步:Sonarqube 的配置

我们需要 服务器身份验证令牌 来自 SonarQube,我们稍后将其传递给 Jenkins。 此令牌允许访问 Jenkins,以在 SonarQube 推送 Jenkins 构建以进行代码分析。

  • 我的账户 > 安全
  • 代币 块,输入任何文本以生成令牌。
  • 保留令牌的副本

这是对 SonarQube 生成用户令牌的评论:

在 SonarQube 中生成服务器身份验证令牌

现在,我们将创建一个发布所有代码分析报告的项目。

  • 行政 > 项目 > 管理
  • 点击 创建项目
  • 使用您的 Project_name 和 Project_key 创建项目。 复制项目名称和密钥。 稍后我们将在 Jenkins 配置中传递此凭据。

创建项目预览:

在 SonarQube 中创建项目

步骤 2. 在 GitLab 进行配置

我们还需要稍后在 Jenkins 传递的 GitLab 用户的访问令牌。 这用于验证 GitLab 用户的存储库 url,Jenkins 从中提取代码。

  • 用户设置 表单设置菜单。
  • 访问令牌
  • 通过添加任何唯一名称创建个人访问令牌(姓名) 和令牌到期日期(到期时间)。 同时设置 范围 到 api- 完全访问。

生成用户访问令牌的预览:

在 GitLab 中生成用户访问令牌在 GitLab 中生成用户访问令牌

步骤 3. Jenkins 的配置

我们需要在 Jenkins Web 面板上配置 GitLab 和 SonarQube。 为此,我们需要安装一些必要的插件。

  • 登录詹金斯
  • 管理詹金斯 > 管理插件
  • 可用的 选项卡,搜索 GitLab 和 SonarQube 并安装以下插件:
  • GitLab 钩子插件
  • 亚搏体育app插件
  • 吉特
  • Jenkins 的 SonarQube 扫描仪

我们需要 SonarQube 扫描仪 将安装在“Jenkins 服务器”上,该服务器实际上开始代码分析并将报告发布到 SonarQube 的项目中。

要安装 SonarQube Scanner,可以使用以下命令:

$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
$ unzip sonar-scanner-cli-3.3.0.1492-linux.zip 
$ cd sonar-scanner-3.3.0.1492-linux $ pwd 

复制位置。 我们需要在 Jenkins 配置中添加这个位置(作为 SonarQube 扫描仪安装主文件夹)。

我们还将在添加 SonarQube 服务器时配置 sonar-scanner 属性文件:

$ cd conf 
$ vi sonar-scanner.properties

取消注释“sonar.host.url”并添加您的 SonarQube 服务器 URL

配置 SonarQube 服务器

现在我们将在 Jenkins 上配置 GitLab 和 SonarQube。

  • 管理詹金斯 > 配置系统
  • SonarQube 服务器 选项卡,输入您的 SonarQube 服务器 URL 和 服务器身份验证令牌 之前在 SonarQube 生成。

在 Jenkins 添加 SonarQube 的预览:

将 SonarQube 添加到 Jenkins 以进行 CI 设置将 SonarQube 添加到 Jenkins

现在,转到 GitLab 选项卡并将您的 GitLab 服务器 URL 添加到 GitLab 主机 URL

证书,我们需要 GitLab API 令牌来访问 GitLab。 点击 添加 并选择 詹金斯: Jenkins 凭证提供者

种类, 选择 GitLab API 令牌 从下拉列表中。 Enter 你之前在 GitLab 生成的 API 令牌。 添加具有唯一 ID 的令牌。

另外,请确保您在 詹金斯位置 标签。

成功添加 GitLab 和 SonarQube 后,我们还需要添加 SonarQube Scanner 配置。

  • 管理詹金斯 > 全局工具配置
  • SonarQube 扫描仪 选项卡,点击 SonarQube 扫描仪安装
  • 取消勾选 自动安装,并添加您的 SonarQube 安装主文件夹。
Jenkins 中的 SonarQube 扫描仪设置我的 SonarQube 扫描仪主文件夹是 /opt/sonar-scanner

第四步:为Jenkins添加项目进行持续集成和持续检查

完成所有配置后,我们现在将在 Jenkins 上创建一个项目。

转到 Jenkins 仪表板 -> 新物品 > 选择 自由式项目. 创建具有唯一项目名称的项目

在 Jenkins 中创建新项目在 Jenkins 中创建新项目

在 Jenkins 仪表板中,选择您的项目并单击 配置.

滚动到 一般的 选项卡,从下拉列表中选择 GitLab 连接。 您将看到我们之前添加的 GitLab 连接名称,位于 管理詹金斯 > 配置系统.

滚动到 源代码管理 选项卡,选择 吉特. 添加您的 GitLab 项目 http URL(这使用与 git clone 命令相同的语法)。 您可以在 GitLab 项目页面获取 URL。

获取 GitLab URL获取 GitLab URL

还要指定 GitLab URL 的身份验证。

  • 凭证 , 点击 添加 并选择 詹金斯: Jenkins 凭证提供者
  • 种类, 选择 用户名和密码 从下拉列表中。
  • Enter 您的 GitLab 登录用户名和密码。
  • 添加具有唯一 ID 的密钥。
Jenkins 中 GitLab 的身份验证Jenkins 中 GitLab 的身份验证

您还需要指定要构建的分支。 如果留空,将检查所有分支的更改并进行构建。

添加分支可以像这样完成:*/

现在,滚动到 构建触发器,选中 GitLab Webhook URL 复选框。

  • 复制 GitLab 网络钩子 URL。 我们需要设置 网络挂钩 再次在 GitLab,使用这个 url。
  • 点击 先进的
  • 生成为 秘密令牌. 复制此令牌,用于稍后在 GitLab 设置 webhook。

创建构建触发器的预览

在 Jenkins 中为 GitLab 生成秘密令牌生成秘密令牌
Jenkins 中 GitLab 的秘密令牌秘密令牌

最后,滚动到 建造 选项卡,在 执行 SonarQube 扫描仪,添加SonarQube扫描仪使用的SonarQube配置参数。 它可能包括 SonarQube ProjectName、ProjectKey、SonarQube Scanner 安装位置等。

Jenkins 中的 SonarQube 扫描仪Jenkins 中的 SonarQube 扫描仪

完成所有配置后,我们需要最后在 GitLab 设置 webhook。

网络钩子 是一种将数据实时推送到其他应用程序的方法。
我们在 GitLab 使用 webhook 在推送事件或合并事件期间自动交付 GitLab 代码,如指定的那样。

  • 登录您的 Gilab 帐户。
  • 您的项目项目 菜单。
  • 选择您的项目
  • 设置 > 集成
  • 添加我们从 Jenkins Build Triggers 选项卡复制的 webhook URL 和 Secret Token。
  • 选择所需的触发器,然后取消选择 SSL 验证.
  • 创建网络钩子

创建 GitLab webhook 预览:

创建 GitLab 网络钩子创建 GitLab 网络钩子
取消选择 SSL 验证

测试 webhook 推送事件.

测试推送事件测试推送事件

测试成功后,项目开始在 Jenkins 上构建。 登录 Jenkins 并验证项目构建。 您可以在 Jenkins 上查看 GitLab 代码 工作区.

在 Jenkins 中检查项目构建在 Jenkins 中检查项目构建

此外,您可以在 SonarQube 上查看项目代码报告。

SonarQube 的项目代码报告SonarQube 的项目代码报告

就是这样! 我们已经成功集成了 GitLab、Jenkins 和 SonarQube。 现在,对于我们 GitLab 存储库的每个推送事件或合并事件,Jenkins 将构建项目并在 SonarQube 上展示代码质量。

我希望本教程对您来说很容易理解。 如果您有任何问题或建议,请告诉我。

作者: Rishi Raj Gautam 是 Linux 爱好者和开源活动家。