1 环境准备
1.1 docker环境准备
docker
或k8s
或rancher
1.2 宿主机创建所需的持久化目录(不持久化可跳过)
postgresql
数据库数据持久化目录sonar
数据和插件持久化目录
mkdir -p /data/postgresql/data
mkdir -p /data/sonarqube/data
mkdir -p /data/sonarqube/extensions
1.3 设置宿主机虚拟内存
如果不设置,可能导致SonarQube
镜像内部的es
无法启动
sysctl -w vm.max_map_count=262144
ulimit -n 65536
ulimit -u 2048
2 安装
2.1 安装postgresql
docker run -d \
-p {postgresql映射的端口}:5432 \
-e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar \
-v /data/postgresql/data:/var/lib/postgresql/data \
--restart=always \
postgres
2.2 安装SonarQube
2.2.1 从docker内复制SonarQube插件(不持久化可跳过)
这步是最繁琐的,如果选择持久化却不进行这步操作会导致sonar无法启动
- 先临时启动一个sonarqube镜像,将镜像内的插件copy出去
# 运行这步后会进入SonarQube镜像内部
docker run -it --rm -v /data/sonarqube/data:/opt/sonarqube/data sonarqube:7.7-community bash
cd /extensions
cp -r ./* ../data
# 运行这步会退出SonarQube镜像
exit
- 将之前拷贝的插件,复制到
extensions
目录
当前环境应该是宿主机
mv /data/sonarqube/data/* /data/sonarqube/extensions
2.2.2 启动SonarQube
启动后要等一会才能启动,账号密码默认都是
admin
docker run -d \
-p 9000:9000 \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://{你的机器ip}:{postgresql映射的端口}/sonar \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions \
--restart=always \
sonarqube:7.7-community
3 配置
3.1 汉化
- 进入
SonarQube
- 点击顶部
Administration
- 点击下方
Marketplace
- 点击
All
- 搜索
Chinese Pack
(这步可能会慢一些,要等一会) - 点击
install
3.2 语言规则
SonarQube支持很多语言,进行搜索安装即可,下面列出常用的插件
Chinese Pack
:中文语言包SonarJava
:java扫描规则插件SonarPython
:python扫描规则插件Findbugs
:java扫描规则插件,属于扩展包SonarJS
:js、vue扫描规则插件SonarHTML
:html扫描规则插件p3c
:阿里巴巴的java代码规范,下载不到,需要自己打包,下节再讲如何安装这个
4 如何扫描代码
4.1 sonar-scanner代码扫描
会在CI/CD流程搭建那篇文章中讲
4.2 maven插件扫描
见下一篇文章 SonarQube7.7安装阿里JAVA规范插件P3C