部署SonarQube实现jenkins流水线调用Sonar Scanner
环境介绍:
* sonarqube-10.7.0.96327 192.168.8.102
* sonar-scanner-6.2.1.4610 192.168.8.102
* Debian12
阶段一 部署SonarQube Server
安装postgresql
apt install -y postgresql
vim /etc/postgresql/15/main/postgresql.conf
#修改pgsql监听地址
listen_addresses = '*'
port = 5432
#修改postgresql可登录地址
vim /etc/postgresql/15/main/pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
systemctl restart postgresql@15
# 切换到pgsql用户
su - postgres
# 创建数据库角色sonarqube
postgres=# CREATE USER sonarqube WITH ENCRYPTED PASSWORD '123456';
# 创建数据库sonarqube,并设定其隶属于sonarqube角色;
postgres=# CREATE DATABASE sonarqube OWNER sonarqube;
# 授权sonarqube用户在sonarqube数据库上拥有全部权限
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
postgres=# \q
-bash-4.2$ exit
logout
部署sonarqube server
# 安装java
apt install -y unzip openjdk-17-jdk
# 下载sonarqube
https://binaries.sonarsource.com/Distribution/sonarqube/
# 解压至指定目录
unzip sonarqube-10.7.0.96327.zip -d /usr/local/
ln -s /usr/local/sonarqube-10.7.0.96327 /usr/local/sonarqube
# 修改系统变量
echo "vm.max_map_count=524288" >> /etc/sysctl.conf
echo "fs.file-max=131072" >> /etc/sysctl.conf
echo "ulimit -n 131072" >> ~/.bashrc
echo "ulimit -u 8192" >> ~/.bashrc
useradd -m sonarqube
chown -R sonarqube:sonarqube /usr/local/sonarqube/
# 修改sonarqube配置文件
grep ^[^#] /usr/local/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonarqube
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
su - sonarqube -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start"
访问并设置sonarqube server
192.168.8.102:9000
ID/passwd admin/admin
sonarqube设置中文

阶段二 部署调用Sonar Scanner
安装配置Sonar Scanner
# 下载Sonar Scanner
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
# 解压Sonar Scanner
unzip sonar-scanner-cli-6.2.1.4610-linux-x64.zip -d /usr/local/
ln -s /usr/local/sonar-scanner-6.2.1.4610-linux-x64 /usr/local/sonar-scanner
################## 测试配置Sonar Scanner ##################
# jenkins调用无需设置此步骤,此步骤为测试是否Sonar Scanner可以使用
# 修改Sonar Scanner配置文件
grep ^[^#] /usr/local/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://127.0.0.1:9000
sonar.login=admin
sonar.password=b8o$csM16EUN
sonar.log.level=INFO
sonar.verbose=false
# gitlab项目创建sonar-project.properties索引文件
rich@debian3:~$ cat spring-boot-helloWorld/sonar-project.properties
sonar.projectKey= spring-boot-helleworld
sonar.projectName=spring-boot-helleworld
sonar.projectVersion=1.0
sonar.sources=.
sonar.java.binaries=.
sonar.language=java
sonar.sourceEncoding=UTF-8
# 在项目根目录下运行sonar scanner
/usr/local/sonar-scanner/bin/sonar-scanner
# 查看扫描结果
Jenkins配置sonarqube
在Jenkins上安装SonarQube Scanner插件
配置Jenkins对接到SonarQube Server
配置Jenkins的全局工具sonar-scanner
在SonarQube上添加回调Jenkins的Webhook
在Jenkins项目上调用sonar-scanner进行代码质量扫描
通过SonarQube确认扫描结果的评估
配置Jenkins对接到SonarQube Server
新建sonarqube用户账号
配置 ->权限 -> 用户
为用户账号授权
配置 -> 权限 -> 全局权限
勾选执行分析和创建人
生成身份令牌
配置 ->权限 -> 用户 -> jenkins -> 令牌 -> 键入令牌名称 -> 修改过期时间 -> 生成
- 将SonarQube令牌存储为Jenkins凭证
Jenkins设置 -> Manage Jenkins -> 凭据 -> 全局 -> 新建 -> Secret text -> secret 行输入生成的令牌
-
添加sonarqube server至jenkins
Jenkins设置 -> Manage Jenkins -> system -> SonarQube servers块 -> 添加Sonar -> http://reg.70o70.com:9000 -> auth token下拉选择刚刚添加的Secret text
![]()
为Jenkins添加sonar-scanner工具
Jenkins设置 -> Tools -> SonarQube Scanner安装
Jenkins添加sonar scanner

在SonarQube上添加回调Jenkins的Webhook
配置 -> webhook -> 新建 -> URL 输入 http://jen.70o70.com:8080/sonarqube-webhook
密码在linux中使用命令行 openssl rand -base64 16 生成 aP3#t6GvS!9wZ*xQ
在Jenkins项目上调用sonar-scanner进行代码质量扫描
在Maven工程相关的Job上添加 构建步骤
sonar.projectKey= spring-boot-helleworld
sonar.projectName=spring-boot-helleworld
sonar.projectVersion=1.0
sonar.sources=.
sonar.java.binaries=.
sonar.language=java
sonar.sourceEncoding=UTF-8


浙公网安备 33010602011771号