国产化驱动经济自主性与科技创新的未来之路
888
2022-10-12
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~