企业在数字化转型中如何利用常用前端框架提高开发效率并确保安全合规?
902
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~