目标
安装个SonarQube社区版.
安装SonarQube9.9.4 LTS社区版
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip
# 切换到安装目录
cd /opt
# 下载安装包
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip
# 解压
sudo unzip sonarqube-9.9.4.87374.zip
# 创建用户和用户组
sudo useradd --system --home /home/sonarqube --shell /sbin/nologin --comment "sonarqube user" --user-group sonarqube
# 分配权限
sudo chown -R sonarqube:sonarqube /opt/sonarqube-9.9.4.87374
# 创建配置文件
sudo vim /etc/systemd/system/sonarqube.service
内容:
[Unit]
Description=sonarqube
After=syslog.target network.target
[Service]
Type=forking
User=sonarqube
Group=sonarqube
WorkingDirectory=/opt/sonarqube-9.9.4.87374/
ExecStart=/opt/sonarqube-9.9.4.87374/bin/linux-x86-64/sonar.sh start
ExecReload=/opt/sonarqube-9.9.4.87374/bin/linux-x86-64/sonar.sh restart
ExecStop=/opt/sonarqube-9.9.4.87374/bin/linux-x86-64/sonar.sh stop
[Install]
WantedBy=multi-user.target
继续:
# 运行SonarQube
sudo systemctl start sonarqube
# 查看状态
systemctl status sonarqube
如果状态没问题打开,9000端口的页面,输入admin/admin账号,修改admin密码后,开始参加凭证。如下图:
点击Copy,复制凭证,然后,转到jenkins界面,开始创建一个凭证。
安装jenkins支持sonarqube插件:
在配置好Jenkins后,再再Jenkinsfile文件中配置,如下阶段:
stage('Static Code Analysis') {
environment {
SONAR_URL = "http://127.0.0.1:9000"
}
steps {
withCredentials([string(credentialsId: 'sonarqube', variable: 'SONAR_AUTH_TOKEN')]) {
sh '''
mvn sonar:sonar -Dsonar.login=$SONAR_AUTH_TOKEN -Dsonar.host.url=${SONAR_URL}
'''
}
}
}
整体文件如下:
pipeline {
agent any
tools {
jdk 'bellsoft-jdk17.0.10'
maven '3.6.3'
}
stages {
stage('Check tool version') {
steps {
sh '''
env | grep -e PATH -e JAVA_HOME
which java
java -version
which mvn
mvn --version
'''
}
}
stage('Build') {
steps {
sh '''
mvn clean && mvn package -Dmaven.test.skip=true
'''
}
}
stage('Static Code Analysis') {
environment {
SONAR_URL = "http://127.0.0.1:9000"
}
steps {
withCredentials([string(credentialsId: 'sonarqube', variable: 'SONAR_AUTH_TOKEN')]) {
sh '''
mvn sonar:sonar -Dsonar.login=$SONAR_AUTH_TOKEN -Dsonar.host.url=${SONAR_URL}
'''
}
}
}
}
}
最后效果如下:
参考:
- Jenkins integration with SonarQube
- Jenkins Pipeline for Java based application using Maven, SonarQube, Argo CD and Kubernetes