代码质量工具 Sonarqube + Jenkins 搭建集成
环境说明
CentOS 7.4.1708
postgres:12.3
sonarqube:8.4.2-community
# 创建存储卷
docker volume create --name sonarqube_data
docker volume create --name sonarqube_extensions
docker volume create --name sonarqube_logs
# sonar 不能直接挂载本地目录,否则语言没法正常安装上
# mkdir -p /data2/sonar/sonarqube/{extensions,logs,data,conf}
mkdir -p /data2/sonar/postgres/{postgresql,data}
docker pull postgres:12.3
docker pull sonarqube:8.4.2-community
cd /data2/sonar
# 使用 docker-compose 管理
cat docker-compose.yml
version: '3'
services:
postgres:
image: postgres:12.3
restart: always
container_name: postgres
ports:
- 5432:5432
volumes:
- /data2/sonar/postgres/postgresql:/var/lib/postgresql
- /data2/sonar/postgres/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
sonar:
image: sonarqube:8.2-community
container_name: sonar
depends_on:
- postgres
volumes:
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_data:/opt/sonarqube/data
# 设置与宿主机时间同步
- /etc/localtime:/etc/localtime:ro
ports:
- 9000:9000
command:
# 内存设置
- -Dsonar.ce.javaOpts=-Xmx2048m
- -Dsonar.web.javaOpts=-Xmx2048m
# 设置服务代理路径
- -Dsonar.web.context=/
# 此设置用于集成gitlab时,回调地址设置
- -Dsonar.core.serverBaseURL=https://sonarqube.example.com
environment:
TZ: Asia/Shanghai
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
volumes:
sonarqube_extensions:
external:
name: sonarqube_extensions
sonarqube_logs:
external:
name: sonarqube_logs
sonarqube_data:
external:
name: sonarqube_data
# 启动
docker-compose up -d
访问服务器的 9000 端口,默认密码为 admin/admin, 安装中文插件
配置用户的 token,用于 jenkins 使用,记得保存~
配置 Jenkins
安装插件
SonarQube Scanner for Jenkins
配置 SonarQube servers
系统管理 -》 SonarQube servers
Server authentication token 为 sonar 创建一个 Secret text 类型的凭证,Secret 为 上面的 token 值
配置项目
在项目中加入 Execute SonarQube Scanner
配置 Analysis properties
sonar.projectKey=dev3-test
sonar.projectName=dev3-test
sonar.projectVersion=1.0
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
成功运行后,可以回到 sonarqube 查看问题
或者可以在 jenkins 执行 shell 时候指定
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar -Dsonar.host.url=http://YOUR_IP:9000 -Dsonar.projectKey=${JOB_NAME} -Dsonar.login=admin -Dsonar.password=admin