SonarQube部署使用、整合Jenkins使用
介绍:SonarQube是一款非常好用的代码质量检测工具,使用简单,可在CICD中担当代码检测角色,提升代码质量;最佳实践:开发提交代码到gitlab→触发jenkins build→拉取代码到jenkins节点→SonarQube代码检测→mvn打jar包→测试→dockerfile打成镜像→docker tag →docker push到harbor → k8s部署官网https://www.
介绍:
SonarQube是一款非常好用的代码质量检测工具,使用简单,可在CICD中担当代码检测角色,提升代码质量;
最佳实践:
开发提交代码到gitlab→触发jenkins build→拉取代码到jenkins节点→SonarQube代码检测→mvn打jar包→测试→dockerfile打成镜像→docker tag →docker push到harbor → k8s部署
官网
https://www.sonarqube.org/
4个版本:Community 社区、Developer 开发者、Enterprise 企业、Data Center 数据中心
社区版本免费,其他的要申请适用
部署:
1.拉镜像
docker pull sonarqube:8.6.1-community
2.创建卷:
docker volume create --name sonarqube_data
docker volume create --name sonarqube_logs
docker volume create --name sonarqube_extensions
3.创建本地文件
mkdir -p /opt/sonarqube/data /opt/sonarqube/extensions /opt/sonarqube/logs
4.运行docker
默认使用h2数据库
docker run -d --name sonarqube_8.6.1-h2 \
-p 9000:9000 \
-v sonarqube_data:/opt/sonarqube/data \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
sonarqube:8.6.1-community
启动之后
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d78e9918c45b sonarqube:8.6.1-community "bin/run.sh bin/sona…" 3 minutes ago Up 3 minutes 0.0.0.0:9000->9000/tcp sonarqube_8.6.1-h2
登录页面 http://ip:9000/
默认初始用户名密码:admin/admin
注意:
h2内嵌数据库只能用于测试场景
h2内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。
使用其他数据库,目前支持Oracle 11g/12c/18c/19c、PostgreSQL 9.3 or greater、Microsoft SQLServer 2014/2016/2017 and SQL Azure。
docker run -d --name sonarqube \
-p 9000:9000 \
# 数据库链接
-e SONAR_JDBC_URL=... \
# 数据库账号
-e SONAR_JDBC_USERNAME=... \
# 数据库密码
-e SONAR_JDBC_PASSWORD=... \
-v sonarqube_data:/opt/sonarqube/data \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
<image_name>
汉化-装个插件:
Java项目代码检测
1.新建项目
2.创建令牌
3.检测Java项目
在项目目录下执行
mvn sonar:sonar \
-Dsonar.projectKey=test_react2 \
-Dsonar.host.url=http://192.168.11.223:9000 \
-Dsonar.login=c636d7ebfb678b24111520b7f987e694ad35a640
3个参数分别为项目名,sonar地址,项目令牌
分析效果:
4.执行前端代码分析(React代码为例)
在项目目录下执行:
sonar-scanner.bat -D"sonar.projectKey=test_react2" -D"sonar.sources=." -D"sonar.host.url=http://192.168.11.223:9000" -D"sonar.login=c636d7ebfb678b24111520b7f987e694ad35a640"
这里需要装个客户端 SonarScanner
下载完之后 sonar-scanner-cli-4.5.0.2216-windows.zip 解压
执行
D:\迅雷下载\sonar-scanner-4.5.0.2216-windows\bin\sonar-scanner.bat -D"sonar.projectKey=test_react" -D"sonar.sources=." -D"sonar.host.url=http://192.168.11.223:9000" -D"sonar.login=c636d7ebfb678b24111520b7f987e694ad35a640"
# 你可以把将 bin 目录添加到 %PATH% 环境变量
效果:
异常问题:
装插件导致SonarQube启动不了的问题处理
1.装完插件之后重启SonarQube,启动失败
2.查看docker日志 docker logs d78e9918c45b,发现如下异常
3.处理:
cd /var/lib/docker/volumes/sonarqube_extensions/_data/plugins
[root@localhost plugins]# ll
总用量 19280
-rwx------. 1 ltx ltx 15545214 2月 4 15:04 checkstyle-sonar-plugin-8.39.jar
-rwx------. 1 ltx ltx 123 1月 25 20:22 README.txt
-rwx------. 1 ltx ltx 4127065 2月 4 15:00 sonar-aemrules-plugin-1.3.jar
-rwx------. 1 ltx ltx 60359 2月 2 14:00 sonar-l10n-zh-plugin-8.6.jar
# 删除此插件
rm -rf codehawk-1.5.jar
4.重启ok
jenkins整合
1.在Pipeline里面添加执行SonarQube
stage('SonarQube+Build') {
//并行任务
parallel {
//代码检测
stage('SonarQube代码检测') {
steps {
//查看目录
sh 'pwd'
//查看maven
sh 'mvn -v'
//sonar代码质量检测
sh 'mvn sonar:sonar -Dsonar.projectKey=boss -Dsonar.host.url=http://192.168.11.223:9000 -Dsonar.login=70bf31671ef415349b7e83945bc90d1a013dbee9'
}
}
//打包
stage('Build打包') {
steps {
//查看目录
sh 'pwd'
//查看jdk
sh 'java -version'
//查看maven
sh 'mvn -v'
//打包
sh 'mvn clean install -Dmaven.test.skip=true'
}
}
}
}
jenkins执行步骤
更多推荐
所有评论(0)