SonarQube安装说明
- 1. SonarQube安装说明
- 1.1. SonarQube简介
- 1.2. 安装SonarQube
- 1.2.1. 拉取PostgreSQL镜像
- 1.2.2. 拉取SonarQube镜像
- 1.2.3. 启动PostgreSQL
- 1.2.4. 启动SonarQube
- 1.2.5. 配置SonarQube
- 1.3. 升级SonarQube
- 1.3.1. 停止和删除老版本容器,删除老镜像
- 1.3.2. 拉取新的镜像,基于该镜像启动容器,命令和上文一样
- 1.4. 卸载SonarQube
- 1.4.1. 停止和删除容器及删除镜像docker命令
- 1.4.2. 删除宿主机文件夹(在启动SonarQube容器时挂载的文件夹)
- 1.4.3. 删除PostgreSQL容器和镜像
- 1.5. 参考资料
1. SonarQube安装说明
1.1. SonarQube简介
SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。
它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。
Sonar不只是一个质量数据报告工具,更是代码质量管理平台。
支持Java, C#, C/C++, PL/SQL, Python, JavaScrip, Groovy等等二十几种编程语言的代码质量管理与检测。
详情请参考官方文档和资料1
1.2. 安装SonarQube
本文使用Docker安装SonarQube,原因是docker很容易部署和升级SonarQube。
SonarQube需要使用数据库,我们采用官方推荐的PostgreSQL,当然MySQL也是可以的。
1.2.1. 拉取PostgreSQL镜像
docker pull postgres
1.2.2. 拉取SonarQube镜像
docker pull sonarqube
1.2.3. 启动PostgreSQL
启动容器,创建了sonar
用户,密码为sonar
,更多环境变量配置参考资料2
docker run --name sonar-postgres -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
1.2.4. 启动SonarQube
因为需要将容器内数据持久化到硬盘,所以在启动容器前要确认挂载的文件夹是否具有权限。
如果担心权限问题,可以使用chmod 777 /home/data/sonar -R
命令对/home/data/sonar
授权,这样所有用户都具有全部权限
docker run -d --name sonar \
--link sonar-postgres \
-p 9001:9000 \
-v /home/data/sonar/data:/opt/sonarqube/data \
-v /home/data/sonar/logs:/opt/sonarqube/logs \
-v /home/data/sonar/extensions:/opt/sonarqube/extensions \
-e sonar.jdbc.username=sonar \
-e sonar.jdbc.password=sonar \
-e sonar.jdbc.url=jdbc:postgresql://sonar-postgres:5432/sonar \
sonarqube
docker命令解释,更多环境变量配置请参考资料3
-
--link
链接到sonar-postgres容器,这样就不用输入该容器地址了 -
-p
将容器9000端口绑定到宿主机的9001端口 -
-v
将宿主机的文件夹挂载到容器的特定目录,这样可以将数据持久化到宿主机硬盘中,方便查看 -
-e
配置PostgreSQL的用户名密码和jdbc链接
1.2.5. 配置SonarQube
- 打开http://localhost:9001,点击login,用户名密码都是admin
- 登录成功后在进入
setting->market
中安装以下插件(安装插件很慢)
- Chinese Pack:中文包
- Code Smells: 检测Java代码问题
- Findbugs:使用Findbugs规则检查Java代码
- PMD:使用PMD规则检查Java代码
- SonarJava:检查Java代码
- SonarPython:检查Python代码
- YAML Analyzer:分析YAML文件
- 安装完成后会提示重启,重启即可。如果没有重启提示也可以手动重启容器
1.3. 升级SonarQube
升级SonarQube只需要拉取最新的镜像,重新运行容器即可
1.3.1. 停止和删除老版本容器,删除老镜像
docker stop sonar
docker rm sonar
docker rmi sonarqube
1.3.2. 拉取新的镜像,基于该镜像启动容器,命令和上文一样
1.4. 卸载SonarQube
卸载SonarQube只需要删除容器、镜像和宿主机上文件夹,同时也要删除PostgreSQL容器和镜像
1.4.1. 停止和删除容器及删除镜像docker命令
docker stop sonar
docker rm sonar
docker rmi sonarqube
1.4.2. 删除宿主机文件夹(在启动SonarQube容器时挂载的文件夹)
rm /home/data/sonar -rf
1.4.3. 删除PostgreSQL容器和镜像
docker stop sonar-postgres
docker rm sonar-postgres
docker rmi postgres
1.5. 参考资料
- Docker搭建SonarQube
- DockHub上PostgreSQL页面
- DockerHub上SonarQube页面