sonarqube-8.3 安装


版本要求

https://docs.sonarqube.org/latest/requirements/requirements/

安装PostgreSQL

1
2
3
4
5
6
docker pull postgres
docker run --name postgres -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -p 5432:5432 -d postgres
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
firewall-cmd --list-all
docker exec -it postgres /bin/bash

修改host

1
2
3
4
5
6
vi /etc/hosts
10.1.171.41 dev.mypostgres.com

C:\Windows\System32\drivers\etc\
hosts
10.1.171.41 dev.mypostgres.com

通过Navicat for Postgres连接

dev.mypostgres.com

5432

sonar/sonar


安装jdk11

1
2
3
4
5
6
7
8
9
10
$ vi /etc/profile
export JAVA_HOME=/data/components/jdk-11.0.7
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

$ source /etc/profile
$ java -version
java version "11.0.7" 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)

SonarQube安装配置

使用zip安装

下载zip文件(http://www.sonarqube.org/downloads/)

1
2
3
unzip sonarqube-8.3.1.34397.zip
ln -s /data/sonarqube-8.3.1.34397 /data/sonarqube
cd /data/sonarqube


设置DB

在pg中建立数据库

1
2
3
4
5
create database sonar;
create user sonar;
atler user sonar with password 'sonar';
alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;
alter database sonar owner to sonar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /data/sonarqube/conf/sonar.properties

# DATABASE
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://dev.mypostgres.com:5432/sonar

sonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000

# sonar.sorceEncoding=UTF-8

添加JDBC驱动程序

已经提供了支持的数据库(Oracle除外)的驱动程序。不要更换提供的驱动程序;他们是唯一受支持的。

1
2
3
4
5
6
/data/sonarqube/lib/jdbc
(base) [root@dev-10-1-171-41 jdbc]# ll
total 12
drwxr-xr-x 2 root root 4096 May 7 13:41 h2
drwxr-xr-x 2 root root 4096 May 7 13:41 mssql
drwxr-xr-x 2 root root 4096 May 7 13:41 postgresql

oracle 数据库需要单独添加驱动,其他数据库已经默认提供

1
2
3
4
/data/sonarqube/extensions/jdbc-driver
(base) [root@dev-10-1-171-41 jdbc-driver]# ll
total 4
drwxr-xr-x 2 root root 4096 May 7 13:22 oracle

配置Elasticsearch存储路径

默认情况下,Elasticsearch数据存储在$ SONARQUBE-HOME / data中,但不建议将其用于生产实例。相反,您应该将此数据存储在其他位置,最好是在具有快速I / O的专用卷中。除了保持可接受的性能外,这样做还可以简化SonarQube的升级。

1
2
3
vi /data/sonarqube/conf/sonar.properties
#sonar.path.data=/var/sonarqube/data
#sonar.path.temp=/var/sonarqube/temp

特别配置jdk路径

1
2
vi /data/sonarqube/conf/wrapper.conf
wrapper.java.command=/data/components/jdk-11.0.7/bin/java

linux系统参数优化

1
2
3
4
5
6
7
8
9
10
11
vi /etc/sysctl.d/99-sonarqube.conf(或/etc/sysctl.conf文件)
vm.max_map_count=262144
fs.file-max=65536

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n

启动Web服务器

1
2
3
4
5
6
7
8
vi /data/sonarqube/conf/sonar.properties
sonar.web.host=0.0.0.0
sonar.web.port=9011
sonar.web.context=

firewall-cmd --permanent --add-port=9011/tcp
firewall-cmd --reload
firewall-cmd --list-all

sonar不能使用root启动

1
2
3
useradd sonar
passwd sonar
chown -R sonar:sonar /data/sonarqube/
1
2
3
4
5
su - sonar
/data/sonarqube/bin/linux-x86-64/sonar.sh start
/data/sonarqube/bin/linux-x86-64/sonar.sh restart

jps -l

设置域名

1
2
3
4
5
6
7
vi /etc/hosts
10.1.171.41 dev.mysonar.com
echo '10.1.171.41 dev.mysonar.com' >> /etc/hosts

C:\Windows\System32\drivers\etc\
hosts
10.1.171.41 dev.mysonar.com

访问:

http://dev.mysonar.com:9011/

默认账号:admin/admin


安装中文插件

install -> restart


使用systemd管理启动


SonarScanner安装配置

文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

下载zip包安装

1
2
3
$ unzip sonar-scanner-cli-4.3.0.2102-linux.zip
$ ln -s /data/downloads/sonar-scanner-4.3.0.2102-linux /data/sonar-scanner
$ ln -s /data/sonar-scanner/bin/sonar-scanner /usr/bin/sonar-scanner

配置

1
2
3
$ vi /data/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://dev.mysonar.com:9011
sonar.sourceEncoding=UTF-8

扫描maven工程示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cd /data/components/leancloud-proxy
$ vi sonar-project.properties
sonar.projectKey=leancloud-proxy
sonar.projectName=leancloud-proxy
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=java
sonar.sources=src
sonar.java.binaries=target
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=false
sonar.scm.disabled=true
sonar.scm.provider=svn
sonar.host.url=http://dev.mysonar.com:9011

执行扫描

1
$ sonar-scanner

http://dev.mysonar.com:9011/projects


扫描php工程示例

1
2
3
4
5
6
7
8
9
10
11
12
$ cd /data/public_html
$ vi sonar-project.properties
sonar.projectKey=php-trunk
sonar.projectName=php-trunk
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=php
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=false
sonar.scm.disabled=true
sonar.scm.provider=svn
sonar.host.url=http://dev.mysonar.com:9011
1
$ sonar-scanner

http://dev.mysonar.com:9011/projects


jenkins + SonarScanner

安装SonarQube Scanner插件

Jenkins → 系统管理 → 管理插件 → 可选插件 → 🔍SonarQueue Scanner

安装以后重启


配置SonarQube

首先,在SonarQube中生成一个Token(PS:用token代替输入用户名和密码)

1
bb6ad69138f3607af1082565551846a5b23eb310

然后,在Jenkins中配置连接sonarqube服务器的地址,这里用到的token就是刚才在sonarqube中创建的那个token

系统设置

最后,配置全局工具配置

创建任务

1
2
3
4
5
6
7
8
9
10
sonar.projectKey=php-trunk
sonar.projectName=php-trunk
sonar.projectVersion=1.0
sonar.sources=$WORKSPACE
sonar.language=php
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=false
sonar.scm.disabled=true
sonar.scm.provider=svn
sonar.host.url=http://dev.mysonar.com:9011

开始构建任务