6.Devops实战篇之——代码测试(SonarQube)

目录

1.sonarqube安装

2.sonarqube插件安装

3.使用maven进行代码测试

4.使用sonar-scanner进行代码测试

4.1 sonar-scanner下载

4.2 解压

4.3 sonar-scanner配置

5. 在本地进行代码测试

6.SonarQube整合到jenkins内部

6.1 下载插件

6.2 配置sonarqube信息

6.3 经由Jenkins的代码测试具体实现

6.4 构建任务并测试是否经过代码测试步骤


#SonarQube开源的代码分析平台,下载地址Download | SonarQube | Sonar (sonarsource.com)

#目前它最新的长期支持版本是9.9.5

1.sonarqube安装

#首先拉取依赖的数据库镜像、sonarqube镜像

docker pull postgres

docker pull sonarqube:9.9.5-community

#编写yml进行部署

[root@k8smaster docker]# pwd
/usr/local/docker
[root@k8smaster docker]# ls
jenkins_docker
[root@k8smaster docker]# mkdir sonarqube_docker
[root@k8smaster docker]# cd sonarqube_docker/
[root@k8smaster sonarqube_docker]# vim docker-compose.yml 
version: '3.1'
services:
  db:
    image: postgres
    container_name: db
    ports:
      - 5432:5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar

  sonarqube:
    image: sonarqube:9.9.5-community
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - 9000:9000
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar

networks:
  sonarnet:
    driver: bridge

[root@k8smaster sonarqube_docker]# docker compose up -d
#启动正常会失败,因为最大虚拟内存太低。

#更改重启即可
[root@k8smaster sonarqube_docker]$echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p
vm.max_map_count = 262144
[root@k8smaster sonarqube_docker]$docker compose up -d

#访问ip:9000

#默认用户名密码都是admin,这里我改了123

2.sonarqube插件安装

#中文插件(需要重启)

3.使用maven进行代码测试

#这里要先在windows配置maven,并在IDEA上声明。

#可以参考这个博主的文章来配置maven

Maven安装和配置详细教程(Windows)_maven windows-CSDN博客

#settings.xml文件修改,记得把前面改过的仓库和java版本也改上

D:\download\apache-maven-3.9.6\conf\settings.xml

<!--加上下面的内容(指定sonar的默认开启。登录地址,用户名和密码)-->
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.login>admin</sonar.login>
            <sonar.password>123</sonar.password>
            <sonar.host.url>http://192.168.64.20:9000</sonar.host.url>
        </properties>
      </profile>

#Allthis done我们就可以通过IDEA里面终端通过命令对当前代码进行质量检测了。

#如果出现这样的报错,更新windows的java版本至java9以上。

#再次回到sonarqube首页,创建一个手工项目,即可发现检测代码的质量。

#异味只是代码不规范的地方,不影响代码功能使用的极小问题而已

4.使用sonar-scanner进行代码测试

#sonar-scanner是sonarqube提供的测试方式,后期jenkins整合sonarqube的时候就需要使用到它

4.1 sonar-scanner下载

地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.1.2450-linux.zip

4.2 解压

[root@k8smaster docker]# pwd
/usr/local/docker
[root@k8smaster docker]# unzip sonar-scanner-cli-4.6.1.2450-linux.zip
[root@k8smaster docker]# mv sonar-scanner-4.6.1.2450-linux/ sonar-scanner

#因为是要给jenkins进行调用的,所以直接把解压好的文件放到映射好的jenkins数据卷中就可以了

[root@k8smaster docker]# mv sonar-scanner/ jenkins_docker/data/

4.3 sonar-scanner配置

[root@k8smaster docker]# cd jenkins_docker/data/sonar-scanner/conf
#改成sonarqube所在地址

#后面我们调用sonarqube提供的token,来通过sonar-scanner使用sonarqube。

5. 在本地进行代码测试

[root@k8smaster conf]# cd ../bin/
[root@k8smaster bin]# pwd
/usr/local/docker/jenkins_docker/data/sonar-scanner/bin
#进入jenkins打包好的代码目录
[root@k8smaster bin]# cd /usr/local/docker/jenkins_docker/data/workspace/test2/
[root@k8smaster test2]# 
[root@k8smaster test2]# ls
docker  mvnw  mvnw.cmd  pom.xml  src  target
#开始进行测试。#sonar.sources项目位置,sonar.projectname项目名称,sonar.projectKey项目标识,sonar.java.binaries项目编译后的位置
[root@k8smaster test2]# /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.java.binaries=./target/ -Dsonar.projectKey=linux-test -Dsonar.login=sqa_a7c4677e09792005ff62cae13f6fab1ea9f169e5
#会报错,因为我们还需要指定用户名和密码,这里使用指定token的方式。

#(在sonarqube网页进行生成token)

#检测成功后,返回sonar首页即可看到检测的项目。

6.SonarQube整合到jenkins内部

#目的十分简单,在jenkins通过maven把包打包构建好后,要经过sonarqube进行代码质量检测。

6.1 下载插件

#SonarQube Scanner

#下载失败可以手动安装,先到jenkins容器内部的plugins目录把相关失败的插件删除后,再手动upload。

6.2 配置sonarqube信息

#先应用保存,再添加token。不然添加不上

#忘记了再次生成即可

##

#至此jenkins已经可以连接到sonarqube了。

6.3 经由Jenkins的代码测试具体实现

#想要实现代码检测,需要在任务中追加配置。

#在构建代码成功步骤后,执行sonar本地代码测试的命令

#想要jenkins执行sonar的命令,就要告诉jenkins全局说sonar在哪。

#构建步骤添加Execute SonarQube Scanner

#JOB_NAME就是引用的Jenkins任务的名称。这里是test2

sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.sources=./
sonar.java.binaries=./target

#这样就ok了

6.4 构建任务并测试是否经过代码测试步骤

#构建会出现错误,其实很简单。因为我们之前的手动测试产生了隐藏文件.scannerwork,而sonar没有权限,我们需要手动进行删除。

[root@k8smaster data]# ls -a workspace/test2/
.  ..  docker  .git  .gitignore  .mvn  mvnw  mvnw.cmd  pom.xml  .scannerwork  src  target

[root@k8smaster data]# rm -fr workspace/test2/.scannerwork/
#删除之后再重新构建即可

  • 34
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Doublew_w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值