一、环境准备
1. 系统配置
bash
# 系统参数优化
cat >>/etc/sysctl.conf << EOF
vm.max_map_count=262144
fs.file-max=65536
EOF
sysctl -p
# 设置系统限制
cat >>/etc/security/limits.conf << EOF
sonarqube - nofile 65536
sonarqube - nproc 4096
EOF
2. 依赖安装
bash
# 安装Java环境
apt update
apt install -y openjdk-11-jdk
# 安装PostgreSQL
apt install -y postgresql postgresql-contrib
二、数据库配置
1. PostgreSQL配置
sql
--创建数据库和用户
CREATE DATABASE sonarqube;
CREATE USER sonarqube WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
--修改PostgreSQL配置
ALTER SYSTEM SET max_connections ='300';
ALTER SYSTEM SET shared_buffers ='256MB';
ALTER SYSTEM SET effective_cache_size ='800MB';
2. 数据库优化
bash
# 修改pg_hba.conf
echo "host sonarqube sonarqube 127.0.0.1/32 md5">>/etc/postgresql/13/main/pg_hba.conf
# 重启PostgreSQL
systemctl restart postgresql
三、SonarQube安装
1. 安装配置
bash
# 下载SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
unzip sonarqube-9.9.0.65466.zip
mv sonarqube-9.9.0.65466/opt/sonarqube
# 创建服务用户
useradd -r sonarqube -d /opt/sonarqube
chown -R sonarqube:sonarqube /opt/sonarqube
2. 服务配置
properties
# /opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonarqube
sonar.jdbc.password=your_password
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
sonar.web.javaOpts=-Xmx2048m-Xms1024m
sonar.web.host=0.0.0.0
sonar.web.port=9000
四、插件管理
1. 核心插件安装
bash
# 安装语言插件
curl -X POST -u admin:admin \
"http://localhost:9000/api/plugins/install?key=java"
# 安装质量配置
curl -X POST -u admin:admin \
"http://localhost:9000/api/qualityprofiles/restore" \
--data-binary @java-sonar-way.xml
2. 自定义规则
xml
<!-- custom-rules.xml -->
<rules>
<rule>
<key>MyCustomRule</key>
<name>CustomNamingConvention</name>
<description>Check naming conventions</description>
<severity>MAJOR</severity>
</rule>
</rules>
五、性能优化
1. JVM配置
bash
# sonar.sh配置
SONAR_OPTS="-server \
-Xms2048m \
-Xmx2048m \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=data/heapdump"
2. Web服务优化
properties
# sonar.properties
sonar.web.javaAdditionalOpts=-server
sonar.search.javaAdditionalOpts=-server
sonar.ce.javaAdditionalOpts=-server
sonar.web.workers=4
sonar.ce.workerCount=4
六、集成配置
1. Jenkins集成
groovy
// Jenkinsfile
pipeline {
agent any
stages {
stage('SonarQube Analysis'){
steps {
withSonarQubeEnv('SonarQube'){
sh "${scannerHome}/bin/sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.sources=src"
}
}
}
}
}
2. GitLab集成
yaml
# .gitlab-ci.yml
sonarqube_analysis:
stage: analyze
script:
- sonar-scanner \
-Dsonar.projectKey=${CI_PROJECT_NAME} \
-Dsonar.sources=. \
-Dsonar.host.url=${SONAR_HOST_URL} \
-Dsonar.login=${SONAR_TOKEN}