部署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

posted @ 2025-06-11 08:58  公共热点  阅读(91)  评论(0)    收藏  举报