devops学习(七) sonarqube 代码质检工具

网友投稿 902 2022-10-12

devops学习(七) sonarqube 代码质检工具

devops学习(七) sonarqube 代码质检工具

我们之前的代码都是直接推送到gitlab后通过jenkins去打包就完事了程序具体好不好使就看测试那边了,为了提前发现BUG我们需要一个代码质检工具sonarqube

一、部署sonarQube 代码质检工具

1、安装

//官方地址/apps/devops_setup/

vi postgres-sonarQube.yaml

apiVersion: apps/v1kind: Deploymentmetadata: name: postgres-sonar namespace: devops labels: app: postgres-sonarspec: 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: v1kind: Servicemetadata: name: postgres-sonar namespace: devops labels: app: postgres-sonarspec: clusterIP: None ports: - port: 5432 protocol: TCP targetPort: 5432 selector: app: postgres-sonar---apiVersion: apps/v1kind: Deploymentmetadata: name: sonarqube namespace: devops labels: app: sonarqubespec: 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: path: /sessions/new port: 9000 initialDelaySeconds: 60 periodSeconds: 30 readinessProbe: 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: v1kind: Servicemetadata: name: sonarqube namespace: devops labels: app: sonarqubespec: type: NodePort ports: - name: sonarqube port: 9000 targetPort: 9000 nodePort: 30006 protocol: TCP selector: app: sonarqube

部署

kubectl apply -f postgres-sonarQube.yamlkubectl -n devops get pod

说明

上面sonarQube需要去公网-插件,所以需要解析公网的dns,在上面的配置中我添加了

dnsConfig: nameservers: ["114.114.114.114"]

这样我们在启动容器时候就会自带一个公网dns解析了,不需要去挂载宿主机的解析前面jenkins 也可以用这种方法,因为这里需要和数据库通讯所以不用前面default模式这样一来,既可以用集群内部解析,也能解析到公网ip

2、访问页面

-p /apps/devops_setup/data/sonarqube/data/extensions/plugins/ cd /apps/devops_setup/data/sonarqube/data/extensions/plugins///拉取插件包wget Scanner 代码扫描插件

我们这里通过sonarQube Scanner工具 将我们的代码发送到sonarQkube上

1、部署扫描插件

//-软件包cd /rootwget sonar-scanner-cli-4.6.0.2311-linux.zipmv sonar-scanner-4.6.0.2311-linux/ sonar-scanner//切换到配置目录cd /root/sonar-scanner/conf/

vi sonar-scanner.properties

sonar.host.url= //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、构建项目测试扫描是否执行成功

如上图,整合代码质检工具完成( ̄︶ ̄)↗

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:LiveGBS国标GB/T28181视频平台作如何添加下级域配置设备单独注册密码接入控制白名单
下一篇:Strings::Case 提供Strings实用程序的字符串大小写转换
相关文章

 发表评论

暂时没有评论,来抢沙发吧~