【devops】七、集成Sonar Qube

说明

这里使用Jenkins服务器部署Sonar Qube来检测代码,如果电脑内存允许,也可以单独加一台服务器部署Sonar Qube。

七、集成Sonar Qube

在这里插入图片描述

7.1 Sonar Qube介绍

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。

Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来。
下图为Sonar Qube的UI界面
在这里插入图片描述

7.2 Sonar Qube环境搭建

7.2.1 Sonar Qube安装——docker安装

Sonar Qube在cent os 7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。

并且这里会安装Sonar Qube的长期支持版本8.9

  1. 拉取镜像
docker pull postgres
docker pull sonarqube:8.9.6-community
  1. 编写docker-compoe.yml
# 创建目录sonarqube_docker,在此目录下编辑yml文件
cd /usr/local/docker
mkdir sonarqube_docker
cd sonarqube_docker
ls
vim docker-compose.yml


下面内容粘贴进去:
version: "3.1"
services:
  db:
    image: postgres
    container_name: db
    ports:
      - 5432:5432   # 默认端口5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: sonarqube:8.9.6-community
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
networks:
  sonarnet:
    driver: bridge
  1. 配置最大内存
# 设置最大内存
vim /etc/sysctl.conf
# 加入以下内容
vm.max_map_count=262144
# 重新加载
sysctl -p
  1. 启动容器
cd /usr/local/docker/sonarqube_docker
docker-compose up -d

需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功
在这里插入图片描述

7.2.2 访问sonarqube

访问Sonar Qube首页——用IP+端口号,这里是192.168.2.211:9000。默认用户名和密码都为admin
在这里插入图片描述

还需要重新设置一次密码
在这里插入图片描述

进入Sonar Qube首页
在这里插入图片描述

7.2.3 安装中文插件

在这里插入图片描述

安装成功后需要重启,安装失败重新点击install重装即可。
安装成功后,会查看到重启按钮,点击即可
在这里插入图片描述

重启后查看效果
在这里插入图片描述

7.3 Sonar Qube基本使用

Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果

7.3.1 Sonar-scanner实现代码检测
  1. 下载Sonar-scanner压缩包:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
    下载4.6.x版本即可,要求Linux版本

  2. 解压并配置sonar服务端信息

① 由于是zip压缩包,需要安装unzip解压插件

yum -y install unzip

②解压压缩包

unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip

③改名并移动/usr/local/docker/jenkins_docker/data/

cd
mv sonar-scanner-4.6.1.2450-linux/ sonar-scanner

mv sonar-scanner /usr/local/docker/jenkins_docker/data/

④配置SonarQube服务端地址,修改conf下的sonar-scanner.properties文件

cd /usr/local/docker/jenkins_docker/data/sonar-scanner/conf
vim sonar-scanner.properties

在这里插入图片描述

  1. 执行命令检测代码
# 在项目所在目录执行以下命令,我这里在/usr/local/docker/jenkins_docker/data/workspace/mytest下执行
/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target/

解释:
/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner  :sonar-scanner命令所在目录
-Dsonar.sources=./  :检测的文件所在目录
-Dsonar.projectname=linux-test  :给检测项目命名
-Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383  :sonarqube网页上生成令牌
-Dsonar.projectKey=linux-test  :指定项目标识(key)
-Dsonar.java.binaries=./target/  :设置编译过后的内容在哪

Ps:主要查看我的sonar-scanner执行命令的位置,这里是/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner
查看日志:
在这里插入图片描述

  1. 查看SonarQube界面检测结果
    在这里插入图片描述

7.4 Jenkins集成Sonar Qube

Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件

7.4.1 Jenkins中安装sonarqube插件

在Jenkins中下载SonarQube Scanner插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.4.2 Jenkins系统配置Sonar Qube
  1. 先在sonarqube上开启Sonar Qube权限验证,一般默认是开启的
    在这里插入图片描述

  2. 获取Sonar Qube的令牌
    在这里插入图片描述

  3. 在Jenkins上配置Sonar Qube信息
    【系统管理】——【系统配置】
    在这里插入图片描述

找到SonarQube servers
在这里插入图片描述
在这里插入图片描述
密码可能添加不了,没关系,先应用保存,然后再回来添加
在这里插入图片描述
选择刚才加好的信息,应用保存
在这里插入图片描述

7.4.3 全局配置Sonar-scanner
  1. 将Sonar-scaner添加到Jenkins数据卷中并配置全局配置
    在这里插入图片描述

  2. mytest任务里构建操作配置sonar-scanner
    在这里插入图片描述

编辑参数
在这里插入图片描述

sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target
7.4.4 构建任务

点击立即构建,如果报错,检查/usr/local/docker/jenkins_docker/data/workspace/mytest下是否有隐藏文件“.scannerwork”,有的话就删掉,再次构建。

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小bā吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值