当前位置:网站首页>devops学习(七) sonarqube 代码质检工具
devops学习(七) sonarqube 代码质检工具
2022-07-29 23:05:00 【默子昂】
我们之前的代码都是直接推送到gitlab后通过jenkins去打包就完事了
程序具体好不好使就看测试那边了,为了提前发现BUG我们需要一个代码质检工具sonarqube
一、部署sonarQube 代码质检工具
1、安装
//官方地址
http://sonarqube.org/
//切换到我们部署devops的目录
cd /apps/devops_setup/
vi postgres-sonarQube.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-sonar
namespace: devops
labels:
app: postgres-sonar
spec:
replicas: 1
selector:
matchLabels:
app: postgres-sonar
template:
metadata:
labels:
app: postgres-sonar
spec:
containers:
- name: postgres-sonar
image: postgres:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: "sonarDB"
- name: POSTGRES_USER
value: "sonarUser"
- name: POSTGRES_PASSWORD
value: "123456"
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
volumes:
- name: data
hostPath:
path: /apps/devops_setup/data/postgres/data
type: DirectoryOrCreate
---
apiVersion: v1
kind: Service
metadata:
name: postgres-sonar
namespace: devops
labels:
app: postgres-sonar
spec:
clusterIP: None
ports:
- port: 5432
protocol: TCP
targetPort: 5432
selector:
app: postgres-sonar
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonarqube
namespace: devops
labels:
app: sonarqube
spec:
replicas: 1
selector:
matchLabels:
app: sonarqube
template:
metadata:
labels:
app: sonarqube
spec:
initContainers:
- name: init-sysctl
image: busybox
imagePullPolicy: IfNotPresent
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
dnsConfig:
nameservers: ["114.114.114.114"]
containers:
- name: sonarqube
image: sonarqube:latest
ports:
- containerPort: 9000
env:
- name: SONARQUBE_JDBC_USERNAME
value: "sonarUser"
- name: SONARQUBE_JDBC_PASSWORD
value: "123456"
- name: SONARQUBE_JDBC_URL
value: "jdbc:postgresql://postgres-sonar:5432/sonarDB"
livenessProbe:
httpGet:
path: /sessions/new
port: 9000
initialDelaySeconds: 60
periodSeconds: 30
readinessProbe:
httpGet:
path: /sessions/new
port: 9000
initialDelaySeconds: 60
periodSeconds: 30
failureThreshold: 6
volumeMounts:
- mountPath: /opt/sonarqube/conf
name: data
subPath: conf
- mountPath: /opt/sonarqube/data
name: data
subPath: data
- mountPath: /opt/sonarqube/extensions
name: data
subPath: extensions
volumes:
- name: data
hostPath:
path: /apps/devops_setup/data/sonarqube/data
type: DirectoryOrCreate
---
apiVersion: v1
kind: Service
metadata:
name: sonarqube
namespace: devops
labels:
app: sonarqube
spec:
type: NodePort
ports:
- name: sonarqube
port: 9000
targetPort: 9000
nodePort: 30006
protocol: TCP
selector:
app: sonarqube
部署
kubectl apply -f postgres-sonarQube.yaml
kubectl -n devops get pod
说明
上面sonarQube需要去公网下载插件,所以需要解析公网的dns,在上面的配置中我添加了
dnsConfig:
nameservers: ["114.114.114.114"]
这样我们在启动容器时候就会自带一个公网dns解析了,不需要去挂载宿主机的解析
前面jenkins 也可以用这种方法,因为这里需要和数据库通讯所以不用前面default模式
这样一来,既可以用集群内部解析,也能解析到公网ip
2、访问页面
http://101.43.4.210:30006
//这里登陆是用的默认密码,不是我们上面yaml文件中定义的密码
admin
admin
//初次登陆时会要修改密码我这里改成
123456
3、安装中文插件
在插件安装的地方搜索chinese 点击上面的同意后install 安装
4、离线安装插件
很多情况下我们都无法直接安装插件,那么我们就只能下载下来后手动安装
//插件下载地址
https://github.com/xuhuisheng/sonar-l10n-zh/releases
//创建插件存放目录
mkdir -p /apps/devops_setup/data/sonarqube/data/extensions/plugins/
cd /apps/devops_setup/data/sonarqube/data/extensions/plugins/
//拉取插件包
wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-9.5/sonar-l10n-zh-plugin-9.5.jar
//删除pod重新加载即可
二、sonarQube Scanner 代码扫描插件
我们这里通过sonarQube Scanner工具 将我们的代码发送到sonarQkube上
1、部署扫描插件
//下载软件包
cd /root
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
unzip sonar-scanner-cli-4.6.0.2311-linux.zip
mv sonar-scanner-4.6.0.2311-linux/ sonar-scanner
//切换到配置目录
cd /root/sonar-scanner/conf/
vi sonar-scanner.properties
sonar.host.url=http://101.43.4.210:30006 //sonarQube 地址
sonar.sourceEncoding=UTF-8 //取消注释
2、挂载到jenkins
我们将上面配置好的工具 挂载到jenkins目录中使用
mv /root/sonar-scanner /apps/devops_setup/data/jenkins/data/
3、生成sonarQube 登陆token
我们在使用sonarQube Scanner 需要将信息发送到sonarQube中,这一步是要认证的
得到了用户的token令牌
squ_8413ea81b0e219590c792a7e784e55c465b716d5
3、手动测试sonarQube Scanner
//切换到我们项目代码目录
cd /apps/devops_setup/data/jenkins/data/workspace/mytest/
//使用扫描工具扫描项目代码并发送到sonarQube
/apps/devops_setup/data/jenkins/data/sonar-scanner/bin/sonar-scanner \
-Dsoanr.sources=./ \
-Dsonar.projectname=linux-test \
-Dsonar.login=squ_8413ea81b0e219590c792a7e784e55c465b716d5 \
-Dsonar.projectKey=linux-test \
-Dsonar.java.binaries=./target
参数说明
//1、指定扫描工具bin文件路径
/apps/devops_setup/data/jenkins/data/sonar-scanner/bin/sonar-scanner
//2、 指定要扫描的代码项目路径 这里是 ./ 当前目录
-Dsoanr.sources=./
//3、指定项目名称是什么,就是我们在sonarQube上看到的项目是什么
-Dsonar.projectname=linux-test
//4、认证token
-Dsonar.login=squ_8413ea81b0e219590c792a7e784e55c465b716d5
//5、项目名称key 和项目名称相同即可
-Dsonar.projectKey=linux-test
//6、指定项目文件打包地址,就是build地址,当前目录下的./target目录
-Dsonar.java.binaries=./target
回到sonarQube上查看
哇咔咔,一上来就有BUG了( •̀ ω •́ )*
三、整合jenkins 与sonarQube
1、安装SonarQube Scanner插件
SonarQube servers
2、配置插件发送的SonarQube地址
这里把添加配置和添加认证信息分开,因为这里直接点添加认证容易卡死
//认证类型
secrets Text
//token值 上面拿的
squ_8413ea81b0e219590c792a7e784e55c465b716d5
//描述
SonarQube-token
3、全局配置扫描工具路径
//名称
sonar-scanner
//工具路径 (我们是挂载进去的,挂载的默认路径是/var/jenkins_home/ 所以是这个路径)
/var/jenkins_home/sonar-scanner/
4、配置项目中使用扫描工具
//添加构建操作--选择
Execute SonarQube Scanner
//指定JDK环境 这个是我们全局配置
JDK
//sonarQube 扫描工具命令
//这里我们不需要带-D 开头,直接输入参数就可以了
//这里的JOB_NAME 变量是我们jenkins项目名称的值,其他和上面我们手动跑的一样
sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
soanr.sources=./
sonar.java.binaries=./target
刚才我们手动跑的时候在mytest项目下面自动创建了一个文件,先删掉在构建
cd /apps/devops_setup/data/jenkins/data/workspace/mytest/
rm -rf .scannerwork/
5、构建项目测试扫描是否执行成功
如上图,整合代码质检工具完成( ̄︶ ̄)
边栏推荐
- Farmers on the assembly line: I grow vegetables in a factory
- @Accessors 注解详解
- The second round of the real offer harvester~ How does the big factory inspect the candidates?(with detailed answer)
- How to make labview an application (labview program recognizes shapes)
- 【leetcode】75. 颜色分类(中等)(双指针、原地修改)
- 新版微信小程序发布指南
- BGP联邦综合实验
- DNA修饰纳米金颗粒|DNA脱氧核糖核酸偶联修饰碳纳米材料|实验原理
- Embedded system driver primary [1] - kernel module _ compilation method
- 【leetcode】50. Pow(x, n)(中等)(快速幂)
猜你喜欢
BGP Federal Comprehensive Experiment
真offer收割机 第一弹~大厂如何考察候选人?(附答案详解)
Huawei 14 Days - (3) Kernel Development
In 2022, the latest Gansu construction staff (material staff) mock exam questions and answers
BGP联邦综合实验
纳米金颗粒修饰核酸产品|碳纳米管载核酸-DNA/RNA材料|解析说明
Win7x64中使用PowerDesigner连接Oralce数据库报“[Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标识符”错误解决方法
bgp基础配置和宣告
真offer收割机 第二弹~大厂如何考察候选人?(附答案详解)
BGP Federal Comprehensive Experiment
随机推荐
【openlayers】地图【二】
【C语言入门】ZZULIOJ 1036-1040
DNA偶联二维过渡金属硫化物|DNA修饰贵金属纳米颗粒|使用方法
Mysql内外连接
MySQL Interview Questions: Detailed Explanation of User Amount Recharge Interview Questions
Cloud computing 1+X openstack articles
【leetcode】75. 颜色分类(中等)(双指针、原地修改)
[leetcode] 82. Delete duplicate elements in sorted linked list II (medium)
DNA修饰碳纳米管|DNA修饰单层二硫化钼|DNA修饰二硫化钨(注意事项)
NetWorker Knowledge Corner|Easy to get an offer [Networker Interview Questions] What is the difference between a Layer 3 switch and a router?
在树莓派上安装 PyCharm
Design for failure常见的12种设计思想
BGP Federal Comprehensive Experiment
树莓派上安装 wiringPi 2.6 解决 gpio readall 命令的错误
Huawei 14 Days - (3) Kernel Development
新版微信小程序发布指南
分支语句那些事儿(上)~~~~看完少走两月弯路!!
cached_network_image 多个图片卡顿崩溃
canvas 中如何实现物体的点选(五)
通过 FileUploader 的初始化,了解 SAP UI5 应用的 StaticArea 初始化逻辑