Sonar Qube介绍和安装(三)

Sonar Qube介绍和安装(三)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六)

Sonar Qube介绍

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来

Sonar Qube环境搭建

Sonar Qube安装

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

拉取镜像

docker pull postgres

docker pull sonarqube:8.9.3-community

编写docker-compoe.yml

version: "3.1"

services:

db:

image: postgres

container_name: db

ports:

- 5432:5432

networks:

- sonarnet

environment:

POSTGRES_USER: sonar

POSTGRES_PASSWORD: sonar

sonarqube:

image: sonarqube:8.9.3-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

启动容器

docker-compose up -d

浏览器访问9000端口,发现容器启动失败,查看docker日志

docker logs -f sonarqube

设置sysctl.conf文件信息

vi /etc/sysctl.conf

设置完成后执行: sysctl -p

sysctl -p

重启容器: docker-compose up -d,访问9000端口登录SonarQube SonarQube 默认密码和账号均为: admin

安装中文插件

Sonar Qube的基本使用

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

Maven实现代码检测

修改Maven的settings.xml文件配置Sonar Qube信息

sonar

true

admin

123456789

http://192.168.43.141:9000

在代码位置执行命令:mvn sonar:sonar 这里执行可能会报错:

java.lang.TypeNotPresentException: Type org.sonarsource.scanner.maven.SonarQubeMojo not present

Caused by: java.lang.UnsupportedClassVersionError: org/sonarsource/scanner/maven/SonarQubeMojo : Unsupported major.minor version 52.0

只需要在pom.xml文件加上

org.codehaus.mojo

sonar-maven-plugin

3.7.0.1746

查看Sonar Qube界面检测结果

Sonar-scanner实现代码检测

下载Sonar-scanner:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/ 下载4.6.x版本即可,要求Linux版本解压并配置sonar服务端信息

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

yum -y install unzip

解压压缩包

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

将 sonar-scanner 移动到 Jenkins 容器数据卷中

cd /usr/local/docker/jenkins_docker/data

mv /sonar-scanner ./

配置sonarQube服务端地址,修改conf下的sonar-scanner.properties

在项目所在目录执行以下命令

Ps:主要查看我的sonar-scanner执行命令的位置

/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.projectKey=linux-test -Dsonar.java.binaries=target/ -Dsonar.login=718e3d1d21ae6a55ddea5e0979d5eb762d9d51fc

查看结果

Jenkins集成Sonar Qube

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

Jenkins安装插件

安装SonarQube Scanner插件 Jenkins配置Sonar Qube 配置Sonar-scanner 将Sonar-scaner添加到Jenkins数据卷中并配置全局配置 配置任务的Sonar-scanner

构建任务

构建任务报错 删除工作目录下 mytest 项目,再次重新构建 由于之前测试生成了 .scannerwork 文件,也可以只删除 .scannerwork 文件 成功构建