SonarQube
不同版本的sonarqube需要不同版本的数据库、jdk环境。这个看文档然后确定要求
(有时候文档里标注的系统要求是不行的。比如要求内存2G,但是实际上是不够的,要注意)
我安装的:
官方文档
Prerequisites and overviewhttps://docs.sonarsource.com/sonarqube-server/9.9/requirements/prerequisites-and-overview/
sonarqube版本:
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.7.96285.zip
jdk版本:
yum list available|grep jdk
postgresql安装(我用的是阿里云上的服务器,配置安全组的时候要把5432,9000端口打开)
PostgreSQL:Linux 下载(Red Hat 系列)https://www.postgresql.org/download/linux/redhat/但是我按照官方安装的时候出了一些问题,/etc/yum.repos.d/下始终无法生成repo文件。我把修改后的文件放到github上
# Install the repository RPM: 这个不行就用我的repo sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
把repo包放到/etc/yum.repos.d/下
https://github.com/Sxm234567890/conf.d/blob/main/pgdg-redhat-all.repo
yum clean all
yum makecache
yum repolist
# Disable the built-in PostgreSQL module:
sudo dnf -qy module disable postgresql
# Install PostgreSQL:
sudo dnf install -y postgresql17-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
sudo systemctl enable postgresql-17
sudo systemctl start postgresql-17
安装好对数据库进行初始化
su postgres #切换用户
psql -U postgres #进入数据库
create database sonar;
create user sonar with encrypted password '123456';
grant all privileges on database sonar to sonar;
alter database sonar owner to sonar
\q #退出数据库
找到配置文件,更改postgresql的监听ip(如果postgresql和sonarqube不是一个服务器)
find / -name "postgresql.conf"
vim /var/lib/pgsql/17/data/postgresql.conf
listen_addresses = '*'
再更改文件pg_hba.conf,是sonarqub连接postgresql的时候不用验证
/var/lib/pgsql/17/data/pg_hba.conf
find / -name "pg_hba.conf"
/var/lib/pgsql/17/data/pg_hba.conf
安装sonarqub
useradd -r -m -s /bin/bash sonarqube #sonarqube安装包在/data下
chown -R sonarqube.sonarqube /data/
su sonarqube
cd /data/
ln -sv sonarqube-9.9.7.96285 sonarqube
cd sonarqube
vim conf/sonar.properties #配置文件
#配置文件内容
sonar.jdbc.username=sonar #连接数据库
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:postgresql://121.40.65.195/sonar
./bin/linux-x86-64/sonar.sh start
访问http://<ip>:9000
sonarqub的service文件
Operating the server 这是我这个版本的sonarqub的service文件
但是要改一下 启动用户、组啊 启动命令 注意文件权限
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup /opt/java/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.5.jar
StandardOutput=journal
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
汉化插件包
xuhuisheng/sonar-l10n-zh: Chinese Pack for SonarQube
下载jar包,放到插件目录
这里面放插件文件
sonar-scanner-cli工具下载地址
(安装到扫描代码的服务器上,比如jenkins)
SonarSource Downloads-CDNhttps://binaries.sonarsource.com/?prefix=Distribution/sonar-scanner-cli/
export SONAR_TOKEN=squ_b652ea7639372a4673c4d34e44a37511b1311295 #这个不可缺少
Sonarqube web可以把这认证取消掉,使用的时候都是公司内网
可以把这个代码拉下来,这里面有实例代码,可以先试着扫描一下这个代码
SonarSource/sonar-scanning-examples: Shows how to use the Scanners
sonar-scanner扫描工具的配置文件
显示扫描结果
注意每个源代码同路径下要有sonar-project.properties,显示这个源代码是什么类型的代码(py,java等)
jenkins拉取gitlab上的代码,在部署之前先对代码扫描。由于每一个源代码都有sonar-project.properties 文件,可以把这个文件放在gitlab上,和代码一起拉下来进行扫描。
jenkins还可以直接配sonar-project.properties