SonarQube+Jenkins代码审查集成CI/CD
说明:docker-compose方式部署sonarqube7.9.2+postgresql12.3
环境准备:
# 临时生效 sysctl -w vm.max_map_count=262144 sysctl -w fs.file-max=65536 ulimit -n 65536 ulimit -u 4096
# 重启生效 echo "sonar - nofile 65536 sonar - nproc 4096" > /etc/security/limits.d/99-sonarqube.conf echo "vm.max_map_count=262144 fs.file-max=65536" > /etc/sysctl.d/99-sonarqube.conf
部署:
1、# 创建容器映射路径
mkdir -p /data/sonar/postgres/{postgresql,data} mkdir -p /data/sonar/sonarqube/{extensions,logs,data,conf} chmod -R 777 /data/sonar/* # 启动容器映射路径权限问题
2、#拉取docker 镜像,拉取镜像较慢,可以使用阿里云镜像站或者清华大学镜像站。
docker pull postgres:12.3 docker pull sonarqube:7.9.2-community
3、# 编辑docker-compose.yml文件
version: ‘3‘
services:
postgres:
image: postgres:12.3
restart: always
container_name: postgres12.3
ports:
- 5432:5432
volumes:
- /data/sonar/postgres/postgresql:/var/lib/postgresql
- /data/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:7.9.2-community
container_name: sonar
depends_on:
- postgres
volumes:
- /data/sonar/sonarqube/extensions:/opt/sonarqube/extensions
- /data/sonar/sonarqube/logs:/opt/sonarqube/logs
- /data/sonar/sonarqube/data:/opt/sonarqube/data
- /data/sonar/sonarqube/conf:/opt/sonarqube/conf
# 设置与宿主机时间同步
- /etc/localtime:/etc/localtime:ro
ports:
- 59000:9000
command:
# 内存设置
- -Dsonar.ce.javaOpts=-Xmx2048m
- -Dsonar.web.javaOpts=-Xmx2048m
# 设置服务代理路径
- -Dsonar.web.context=/
# 此设置用于集成gitlab时,回调地址设置
- -Dsonar.core.serverBaseURL=https://sonarqube.bdszh.vip
environment:
TZ: Asia/Shanghai
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
4、# -d 服务后台运行
docker-compose up -d
5、#nginx反向代理,DNS解析
... server { listen 80; server_name xxx.xxx.com; location / { proxy_pass http://127.0.0.1:59000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ...
6、访问http://xxx.xxx.com
初始账号密码:admin/admin
7、中文插件
Jenkins集成
1、安装插件 SonarQube Scanner for Jenkins
2、系统配置——SonarQube servers——URL和token
3、全局工具配置—— SonarScanner for MSBuild——自动安装——选择版本