1、sonarqube简介
SonarQube 是一个自我管理的自动代码管理工具,sonarqube实例包含三个组件:sonarqube-scanner ,sonarqube server和Database server,其基本架构图如下:
sonarqube server上主要有3个应用:
- Web服务:为SonarQube用户界面提供服务的。
- 搜索服务:基于 Elasticsearch 器。
- 计算引擎:负责处理代码分析报告并将其保存在SonarQube数据库中。
目前发布了4个版本,社区版(免费),开发者版,企业版和数据中心版
社区版本不支持集群部署,性能上考虑,可将sonarqube服务器和DB服务器分别安装到不同主机上。下面的章节将逐步说明部署的整体过程
2、sonarqube安装
2.1安装要求确认
2.1.1硬件要求
- 小型团队安实例SonarQube服务器需要至少2GB的RAM才能高效运行,并且操作系统需要1GB的可用RAM。如果您要为大型团队或企业安装实例,请考虑以下其他建议。
- 所需的磁盘空间量将取决于您使用SonarQube分析的代码量。
- SonarQube必须安装在具有出色读写性能的硬盘驱动器上。最重要的是,“data”文件夹包含 Elasticsearch 索引,当服务器启动并运行时,将在其上完成大量的 I/O。因此,出色的读写硬盘性能将对SonarQube服务器的整体性能产生重大影响。
- SonarQube 不支持服务器端的 32 位系统。但是,SonarQube在扫描仪端确实支持32位系统
在企业级别,监控SonarQube实例至关重要,并且应该随着实例的增长而指导进一步的硬件升级。起始配置应至少包括:
- 8 个内核,允许主 SonarQube 平台与多个计算引擎工作线程一起运行
- 16GB 内存 有关数据库和 ElasticSearch 的其他要求和建议,请参阅硬件建议。
2.1.2 支持的平台要求
SonarQube 服务器需要 Java 版本 11,而 SonarQube 扫描程序需要 Java 版本 11 或 17。
SonarQube能够分析任何类型的Java源文件,无论它们遵守Java版本如何。建议使用重要补丁更新 (CPU) 版本。
数据库上支持PostgreSQL,Oracle和Microsoft SQLServer。本安装指导使用PostgreSQL,支持的版本如下:
2.2 安装JDK
1、下载openjdk安装包:
下载链接:Latest Releases | Adoptium
2、安装jdk并添加环境变量
首先,切换到root账号,创建安装目录
mkdir /usr/local/java
然后,将下载的压缩包解压到新建的这个目录下
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即为修改成功
3.2.2 创建sonarqube数据库账号并修改权限
postgre账号登录数据库下,执行如下数据库命令:
postgres=# create user sonarqube with password '需要修改的口令';
postgres=# \du
postgres=# alter user sonarqube createrole createdb replication login;
执行效果如下:
3.2.3 创建sonarqube数据库
执行sql命令如下:
postgres=# create database sonarqube;
postgres=# grant CREATE on DATABASE sonarqube to sonarqube;
执行后查询:
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,·登录后修改密码,配置下面的账号设置选择修改密码
修改密码方法如下:配置->用户->账号右侧设置按钮->修改密码
添加普通账号,右上角上点击添加账号,补充相关信息,完成添加
设置账号访问秘钥
点击右侧账号打开下拉菜单,选择我的账号,然后选择安全,添加秘钥并报错,注意秘钥只首次显示,需要copy后保存
7、使用scanner完成代码扫描
方法如下:
首先在界面新建项目
设置项目名称,然后点击设置
然后选择本地
选择使用之前已经创建好的令牌,,并点击继续
然后选择需要分析项目的开发语言和平台
将生成的扫描指令复制下来。
登录到scanner扫描服务器下面需要扫描代码的主目录,然后执行这段代码
sonar-scanner \
-Dsonar.projectKey=review \
-Dsonar.sources=. \
-Dsonar.host.url=http://192.168.65.139:9000/sonarqube \
-Dsonar.login=替换成设置的令牌
执行如下:
完成后有如下打印:
登录sonarqube的主页,查询报告