编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Jenkins 进阶篇 - SonarQube 集成

wxchong 2024-09-28 02:21:18 开源技术 80 ℃ 0 评论

在前面我们已经把 SonarQube 系统安装部署好了,现在怎样将 SonarQube 系统使用起来呢,项目代码的质量究竟该怎样分析呢?接下来我们将介绍 SonarQube 的使用以及和 Jenkins 系统的集成。

首先配置 SonarQube 的授权 Token,我们的项目代码进行静态扫描后,会把代码和代码质量相关的数据发送到 SonarQube 平台里面,要将数据发送到 SonarQube 里面就要先进行授权才行。如果用 SonarQube 的账号密码授权会有账号密码泄漏的风险,所以 SonarQube 要求用 Token 进行授权。

登录到 SonarQube 平台后,点击右上角的用户头像,在【我的账号】中的【安全】菜单选项中生成用于授权的 Token 令牌:

填写好令牌名称,点击【生成】令牌:

记录好生成的令牌字符串,后面在 SonarQube 里面再也不会显示了:

如果有些 Token 令牌你不想再使用了,可以进行回收删除处理。

接下来我们就来把 Jenkins 任务的构建和 SonarQube 进行结合,将代码质量的扫描数据发送到 SonarQube 系统。有两种方式来实现我们的目标,如果你的项目是采用 Maven 或者 Gradle 进行管理的,那么只需要在命令行或者配置文件中加入 SonarQube 相关的配置即可,如果不是 Maven 或者 Gradle 项目,就需要在 SonarQube Scanner 来实现代码的扫描和报告的传输。

如果你是 Maven 项目那就更简单,因为 Maven 内置了 sonar 支持,例如我这里有个示例 Maven 项目,如果要进行代码静态扫描执行下面的命令即可:

mvn sonar:sonar \
  -Dsonar.projectKey=my-demo-project \
  -Dsonar.host.url=http://192.168.31.200:9000 \
  -Dsonar.login=280e7ffb275a8fca389b8c815330bbd0b4806eb8
  
# 如果你的项目下有maven-wrapper,将 mvn 换成 mvnw 即可
mvnw sonar:sonar \
  -Dsonar.projectKey=your-project-name \
  -Dsonar.host.url=http://192.168.31.200:9000 \
  -Dsonar.login=280e7ffb275a8fca389b8c815330bbd0b4806eb8

如果你是 Gradle 项目,在 build.gradle 文件中加入 SonarQube 的 Gradle 插件即可,例如我这里如下:

plugins {
  id "org.sonarqube" version "3.0"
}

然后执行下面的 gradle 构建命令就能实现代码静态扫描与报告传输:

./gradle sonarqube \
  -Dsonar.projectKey=your-project-name \
  -Dsonar.host.url=http://192.168.31.200:9000 \
  -Dsonar.login=280e7ffb275a8fca389b8c815330bbd0b4806eb8
  
# 如果你的项目下有gradle-wrapper,将 gradle 换成 gradlew 即可
./gradle sonarqube \
  -Dsonar.projectKey=your-project-name \
  -Dsonar.host.url=http://192.168.31.200:9000 \
  -Dsonar.login=280e7ffb275a8fca389b8c815330bbd0b4806eb8

等待代码质量扫描命令执行完成后就可以去到 SonarQube 的管理面板里面查看相关的代码质量数据了。如果你有配置域名解析的话,上面的 SonarQube 服务地址可以将 IP 端口的形式换成域名。上面的演示的因为是 Maven 和 Gradle 项目,集成起来比较简单,如果是其他类型的项目,如 HTML、Python、NetCore 等,则要用到 SonarQube Scanner 来实现。

首先我们要在 Jenkins 中安装 SonarQube Scanner 插件,插件安装好后在 Jenkins 的【系统配置】里面找到【SonarQube servers】进行一些配置,添加 SonarQube 服务器和 Token 密钥,这个 Token 就是之前我们在 SonarQube 平台里面生成的:

如果还没有在 Jenkins 里面配置 SonarQube 的授权 Token,可以添加一个 Secret text 类型的凭证:

SonarQube 服务器和密钥都配置好了,接下来还要配置我们的 sonar scanner 工具,先在【全局工具配置】的【SonarQube Scanner】里面增加一个 scanner 的安装设置,如下图:

最后一步就是配置 Jenkins 任务的构建过程,我这里添加了一个自由风格的 Nodejs 项目,配置如下,没有其他的操作,只是在【构建】步骤中添加了一个 【Execute SonarQube Scanner】步骤来执行代码静态扫描:

然后构建这个任务,你会发现多出 SonarQube 相关的图标,点击这个图标会跳转到 SonarQube 系统里面去:

在 SonarQube 系统中我们会看到新增了一个项目的代码质量报告,点击进去可以看到具体是哪些地方的代码需要改进。

从我们的演示来看大家应该发现 Java 项目配置 SonarQube 进行代码质量扫描的方式非常简单,需要用 sonar scanner 来完成代码质量扫描的配置就比较繁琐了。推荐是 Java 等开发的后端项目尽量要做代码质量扫描,SonarQube 给出的改进方式是非常有用的,特别是一些安全热点和代码漏洞的相关提示,可以加强我们代码的安全性和健壮性。对于想 HTML、JavaScript 等前端项目自己可以酌情选择是否进行代码质量扫描。

你在使用过程中遇到什么问题,欢迎留言讨论。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表