【devops】七、集成Sonar Qube

发布时间:2025-12-09 19:59:14 浏览次数:5

目录

    • 说明
    • 七、集成Sonar Qube
      • 7.1 Sonar Qube介绍
      • 7.2 Sonar Qube环境搭建
        • 7.2.1 Sonar Qube安装——docker安装
        • 7.2.2 访问sonarqube
        • 7.2.3 安装中文插件
      • 7.3 Sonar Qube基本使用
        • 7.3.1 Sonar-scanner实现代码检测
      • 7.4 Jenkins集成Sonar Qube
        • 7.4.1 Jenkins中安装sonarqube插件
        • 7.4.2 Jenkins系统配置Sonar Qube
        • 7.4.3 全局配置Sonar-scanner
        • 7.4.4 构建任务

说明

这里使用Jenkins服务器部署Sonar Qube来检测代码,如果电脑内存允许,也可以单独加一台服务器部署Sonar Qube。

七、集成Sonar Qube

7.1 Sonar Qube介绍

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。

Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来。
下图为Sonar Qube的UI界面

7.2 Sonar Qube环境搭建

7.2.1 Sonar Qube安装——docker安装

Sonar Qube在cent os 7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。

并且这里会安装Sonar Qube的长期支持版本8.9

  • 拉取镜像
  • docker pull postgresdocker pull sonarqube:8.9.6-community
  • 编写docker-compoe.yml
  • # 创建目录sonarqube_docker,在此目录下编辑yml文件cd /usr/local/dockermkdir sonarqube_dockercd sonarqube_dockerlsvim docker-compose.yml下面内容粘贴进去:version: "3.1"services:db:image: postgrescontainer_name: dbports:- 5432:5432 # 默认端口5432networks:- sonarnetenvironment:POSTGRES_USER: sonarPOSTGRES_PASSWORD: sonarsonarqube:image: sonarqube:8.9.6-communitycontainer_name: sonarqubedepends_on:- dbports:- "9000:9000"networks:- sonarnetenvironment:SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarSONAR_JDBC_USERNAME: sonarSONAR_JDBC_PASSWORD: sonarnetworks:sonarnet:driver: bridge
  • 配置最大内存
  • # 设置最大内存vim /etc/sysctl.conf# 加入以下内容vm.max_map_count=262144# 重新加载sysctl -p
  • 启动容器
  • cd /usr/local/docker/sonarqube_dockerdocker-compose up -d

    需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功

    7.2.2 访问sonarqube

    访问Sonar Qube首页——用IP+端口号,这里是192.168.2.211:9000。默认用户名和密码都为admin

    还需要重新设置一次密码

    进入Sonar Qube首页

    7.2.3 安装中文插件

    安装成功后需要重启,安装失败重新点击install重装即可。
    安装成功后,会查看到重启按钮,点击即可

    重启后查看效果

    7.3 Sonar Qube基本使用

    Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果

    7.3.1 Sonar-scanner实现代码检测

  • 下载Sonar-scanner压缩包:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
    下载4.6.x版本即可,要求Linux版本

  • 解压并配置sonar服务端信息

  • ① 由于是zip压缩包,需要安装unzip解压插件

    yum -y install unzip

    ②解压压缩包

    unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip

    ③改名并移动/usr/local/docker/jenkins_docker/data/下

    cdmv sonar-scanner-4.6.1.2450-linux/ sonar-scannermv sonar-scanner /usr/local/docker/jenkins_docker/data/

    ④配置SonarQube服务端地址,修改conf下的sonar-scanner.properties文件

    cd /usr/local/docker/jenkins_docker/data/sonar-scanner/confvim sonar-scanner.properties
  • 执行命令检测代码
  • # 在项目所在目录执行以下命令,我这里在/usr/local/docker/jenkins_docker/data/workspace/mytest下执行/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target/解释:/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner :sonar-scanner命令所在目录-Dsonar.sources=./ :检测的文件所在目录-Dsonar.projectname=linux-test :给检测项目命名-Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 :sonarqube网页上生成令牌-Dsonar.projectKey=linux-test :指定项目标识(key)-Dsonar.java.binaries=./target/ :设置编译过后的内容在哪

    Ps:主要查看我的sonar-scanner执行命令的位置,这里是/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner
    查看日志:

  • 查看SonarQube界面检测结果
  • 7.4 Jenkins集成Sonar Qube

    Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件

    7.4.1 Jenkins中安装sonarqube插件

    在Jenkins中下载SonarQube Scanner插件


    7.4.2 Jenkins系统配置Sonar Qube

  • 先在sonarqube上开启Sonar Qube权限验证,一般默认是开启的

  • 获取Sonar Qube的令牌

  • 在Jenkins上配置Sonar Qube信息
    【系统管理】——【系统配置】

  • 找到SonarQube servers


    密码可能添加不了,没关系,先应用保存,然后再回来添加

    选择刚才加好的信息,应用保存

    7.4.3 全局配置Sonar-scanner

  • 将Sonar-scaner添加到Jenkins数据卷中并配置全局配置

  • mytest任务里构建操作配置sonar-scanner

  • 编辑参数

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

    7.4.4 构建任务

    点击立即构建,如果报错,检查/usr/local/docker/jenkins_docker/data/workspace/mytest下是否有隐藏文件“.scannerwork”,有的话就删掉,再次构建。

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477