jenkins+sonarQube实现代码扫描

发布时间 2023-10-09 17:06:05作者: 怪圣卡杰

sonarQube安装

  • SonarQube基于Java开发,所以需要安装 OpenJDK8 版本。
  • SonarQube需要依赖 MySQL 数据库,至少 5.6 版本以上。
  • SonarQube的小型实例至少需要4GB 内存,如果是大型实例需要 16GB
  • 7.8之后JDK本版需要JDK11本版 且不支持MySQL

本次安装的时7.4的本版

  • sonarqube版本 7.4下载地址 wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.4.zip
  • jdk 1.8
  • Mysql 5.7.30 需要手动创建sonar库
  • 解压 unzip sonarqube-7.4.zip -d /usr/local/
  • 因为sonarqube不能以root启动,此处需要创建一个普通用户,此处我创建的为sonar

    useradd sonar
  • 更改下sonarqube目录所有权

  • ln -s /usr/local/sonarqube-7.4 /usr/local/sonarqube
    chown -R sonar:sonar /usr/local/sonarqube
    chown -R sonar:sonar /usr/local/sonarqube-7.4/
  • 修改sonarqube连接数据库配置文件 /usr/local/sonarqube-7.4/conf/sonar.properties

  • sonar.jdbc.url=jdbc:mysql://xxx:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    sonar.jdbc.username=sonar
    sonar.jdbc.password=xxx
    sonar.sorceEncoding=UTF-8
    sonar.login=admin
    sonar.password=admin
  • 相关日志文件 /usr/local/sonarqube-7.4/logs
  • 启动sonarqube服务

    目录 /usr/local/sonarqube-7.4/bin/linux-x86-64 启动服务时需先切换位sonar用户

    su -l sonar
    ./sonar.sh start 启动服务本目录会生成一个wrapper.log日志文件

  • 开放端口

    firewall-cmd --add-port=9000/tcp --permanent
    firewall-cmd --query-port=9000/tcp
    firewall-cmd --reload
    systemctl restart firewalld
    systemctl status firewalld
    systemctl stop firewalld

  • 通过浏览器输入 http://xxx:9000地址来访问sonarqube 用户名:admin 用户密码:admin

  • sonar-scanner 下载与配置 

    地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip
    解压:解压 unzip sonar-scanner-cli-3.2.0.1227-linux.zip -d /usr/local/
    修改配置 /usr/local/sonar-scanner-3.2.0.1227-linux/conf/sonar-scanner.properties
    Configure here general information about the environment, such as SonarQube server connection details for example
    #No information about specific project should appear here
    #----- Default SonarQube server
    sonar.host.url=http://localhost:9000
    #----- Default source code encoding
    sonar.sourceEncoding=UTF-8

jenkins 配置sonarQube

  • 安装插件 Manage Jenkins–>Manage Plugins–>SonarQube Scanner

     

  • 在 Jenkins 上配置 SonarQube 服务端地址;Manage Jenkins–>Configure System–>sonarQube

  • 添加令牌 sonar 生成令牌 Jenkins添加令牌

     

     

  • 配置 Sonar-Scanner 客户端工具路径Manage Jenkins–>Global Tool Configuration–>sonar-scanner

  • 构建配置 

     

    sonar.projectName=${JOB_NAME} #项目在sonarqube上的显示名称
    sonar.projectKey=XXXXX #项目的唯一标识,不能重复
    sonar.sources=XXXXXXXXXXXX/src #扫描哪个项目的源码(使用绝对路径)
    sonar.java.binaries=XXXXXXXXXXX/classes #扫描哪个项目的classes(使用绝对路径)
    sonar.java.source=1.8 #java版本
    sonar.language=java #语言

  • 构建项目