1、sonarqube简介

SonarQube 是一个自我管理的自动代码管理工具,sonarqube实例包含三个组件:sonarqube-scanner ,sonarqube server和Database server,其基本架构图如下:

SonarQube java代码规则 sonarqube部署_服务器

sonarqube server上主要有3个应用:

  • Web服务:为SonarQube用户界面提供服务的。
  • 搜索服务:基于 Elasticsearch 器。
  • 计算引擎:负责处理代码分析报告并将其保存在SonarQube数据库中。

目前发布了4个版本,社区版(免费),开发者版,企业版和数据中心版

SonarQube java代码规则 sonarqube部署_测试工具_02

社区版本不支持集群部署,性能上考虑,可将sonarqube服务器和DB服务器分别安装到不同主机上。下面的章节将逐步说明部署的整体过程

2、sonarqube安装

2.1安装要求确认

2.1.1硬件要求

  1. 小型团队安实例SonarQube服务器需要至少2GB的RAM才能高效运行,并且操作系统需要1GB的可用RAM。如果您要为大型团队或企业安装实例,请考虑以下其他建议。
  2. 所需的磁盘空间量将取决于您使用SonarQube分析的代码量。
  3. SonarQube必须安装在具有出色读写性能的硬盘驱动器上。最重要的是,“data”文件夹包含 Elasticsearch 索引,当服务器启动并运行时,将在其上完成大量的 I/O。因此,出色的读写硬盘性能将对SonarQube服务器的整体性能产生重大影响。
  4. SonarQube 不支持服务器端的 32 位系统。但是,SonarQube在扫描仪端确实支持32位系统

         在企业级别,监控SonarQube实例至关重要,并且应该随着实例的增长而指导进一步的硬件升级。起始配置应至少包括:

  • 8 个内核,允许主 SonarQube 平台与多个计算引擎工作线程一起运行
  • 16GB 内存 有关数据库和 ElasticSearch 的其他要求和建议,请参阅硬件建议

 2.1.2 支持的平台要求

SonarQube 服务器需要 Java 版本 11,而 SonarQube 扫描程序需要 Java 版本 11 或 17。

SonarQube能够分析任何类型的Java源文件,无论它们遵守Java版本如何。建议使用重要补丁更新 (CPU) 版本。

SonarQube java代码规则 sonarqube部署_SonarQube java代码规则_03

数据库上支持PostgreSQL,Oracle和Microsoft SQLServer。本安装指导使用PostgreSQL,支持的版本如下:

SonarQube java代码规则 sonarqube部署_测试工具_04

2.2 安装JDK

1、下载openjdk安装包:

下载链接:Latest Releases | Adoptium

2、安装jdk并添加环境变量

首先,切换到root账号,创建安装目录

mkdir /usr/local/java

SonarQube java代码规则 sonarqube部署_服务器_05

然后,将下载的压缩包解压到新建的这个目录下

3、添加环境变量到/etc/profile,并执行source /etc/profile使其生效

export JAVA_HOME=/usr/local/java/jdk-11.0.16.1
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

4、验证java安装

 

~$ java --version
openjdk 11.0.16.1 2022-08-12
OpenJDK Runtime Environment Temurin-11.0.16.1+1 (build 11.0.16.1+1)
OpenJDK 64-Bit Server VM Temurin-11.0.16.1+1 (build 11.0.16.1+1, mixed mode)

 3、安装PostgreSQL

首先创建好普通账号,PostgreSQL安装需要再非root账号下安装。

useradd -m sonarqube -s /bin/bash

切换到sonarqube账号下完成后续安装

3.1安装

3.1.1设置安装源

sudo sh -c 'echo "deb Index of /pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

3.1.2 使用apt命令安装

本指导中使用了14版本,官网要求没有这个版本,可以选择官网推荐的版本13

sudo apt  -y install postgresql-14

3.2 初始化配置

3.2.1初始化postgre账号口令

执行如下指令使用postgre账号登录到数据库,然后执行alter命令修改默认口令

$ sudo -u postgres psql
postgres=# alter user postgres with password 'change passwd';

 修改后有提示ALTER ROLE即为修改成功

SonarQube java代码规则 sonarqube部署_测试工具_06

 3.2.2 创建sonarqube数据库账号并修改权限

postgre账号登录数据库下,执行如下数据库命令:

postgres=# create user sonarqube with password '需要修改的口令';
postgres=# \du
postgres=# alter user sonarqube createrole createdb replication login;

 执行效果如下:

SonarQube java代码规则 sonarqube部署_bc_07

3.2.3 创建sonarqube数据库

执行sql命令如下:

postgres=# create database sonarqube;
postgres=# grant CREATE on DATABASE sonarqube to sonarqube;

 执行后查询:

SonarQube java代码规则 sonarqube部署_数据库_08

3.2.4 创建sonarqube数据库schema

切换到sonarqube账号登录到数据库,并执行新建指令:

sonarqube@qudoor-virtual-machine:~$ psql  sonarqube -U sonarqube -W
Password:
psql (14.5 (Ubuntu 14.5-1.pgdg22.04+1))
Type "help" for help.

sonarqube=> CREATE SCHEMA IF NOT EXISTS sonarqube AUTHORIZATION SESSION_USER;
sonarqube=> \dn
    List of schemas
   Name    |   Owner
-----------+-----------
 public    | postgres
 sonarqube | sonarqube
(2 rows)

4、安装SonarQube

4.1 软件包下载

下载链接 https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.6.1.59531.zip

 4.2  安装sonarqube

首先新建安装目录,一般放到/opt目录下,mkdir /opt/SonarQube

然后将下载的安装包解压到/opt/SonarQube目录下及完成安装,然后需要更改安装配置。

4.2.1 修改配置

主要的配置文件如下是安装家目录下的conf目录下的sonar.properties文件,需要设置的配置包括:设数据库访问的链接(包含schema,数据库名),数据库访问账号和密码,sonarqube的web地址,访问端口,日志路径以及elasticsearch的数据保存的地址。如下

$ cat sonar.properties
#---数据库访问链接配置
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=sonarqube
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube账号设置的密码
#----web地址绑定及访问地址
sonar.web.host=192.168.65.139
sonar.web.context=/sonarqube
sonar.web.port=9000
#----日志访问路径
sonar.path.logs=/var/log/sonarqube/
#---es数据保存地址,建议此地址修改到/var/log/data和/var/log/tmp
sonar.path.data=data
sonar.path.temp=temp
#以上log地址和es的保存地址需要授权访问,chown -R sonarqube:sonarqube  设置的路径

4.2.2 启动sonarqube

在sonarqube安装目录下的bin目录下的linux-x86-64下执行如下:

./sonar.sh start   #启动
./sonar.sh console #启动过程中查询console打印
./sonar.sh status  #查询状态

5、安装sonar-scanner

scanner的文档地址:SonarScanner | SonarQube Docs

下载链接:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip 

首先,新建安装目录:/opt/sonar-scanner。

然后将下载后将压缩包解压到/opt/sonar-scanner目录下,并设置环境变量

修改sonarqube账号的.bashrc文件,添加如下设置:

export PATH=/home/sonarqube/sonar-scanner-4.7.0.2747-linux/bin:$PATH

然后执行source .bashrc使配置生效

6、登录SonarQube主页

安装完成后,sonarqube的访问地址为:http://192.168.65.139:9000/sonarqube

默认登录账号密码是admin/admin,·登录后修改密码,配置下面的账号设置选择修改密码

修改密码方法如下:配置->用户->账号右侧设置按钮->修改密码 

SonarQube java代码规则 sonarqube部署_服务器_09

添加普通账号,右上角上点击添加账号,补充相关信息,完成添加

SonarQube java代码规则 sonarqube部署_数据库_10

设置账号访问秘钥

点击右侧账号打开下拉菜单,选择我的账号,然后选择安全,添加秘钥并报错,注意秘钥只首次显示,需要copy后保存

SonarQube java代码规则 sonarqube部署_SonarQube java代码规则_11

 7、使用scanner完成代码扫描

方法如下:

首先在界面新建项目

SonarQube java代码规则 sonarqube部署_测试工具_12

 设置项目名称,然后点击设置

SonarQube java代码规则 sonarqube部署_SonarQube java代码规则_13

 然后选择本地

SonarQube java代码规则 sonarqube部署_bc_14

 选择使用之前已经创建好的令牌,,并点击继续

SonarQube java代码规则 sonarqube部署_SonarQube java代码规则_15

 然后选择需要分析项目的开发语言和平台

SonarQube java代码规则 sonarqube部署_测试工具_16

将生成的扫描指令复制下来。

登录到scanner扫描服务器下面需要扫描代码的主目录,然后执行这段代码

sonar-scanner \
  -Dsonar.projectKey=review \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://192.168.65.139:9000/sonarqube \
  -Dsonar.login=替换成设置的令牌

执行如下:

SonarQube java代码规则 sonarqube部署_测试工具_17

 完成后有如下打印:

SonarQube java代码规则 sonarqube部署_数据库_18

 登录sonarqube的主页,查询报告

SonarQube java代码规则 sonarqube部署_bc_19