SonarQube安装与多分支扫描分析插件安装
1. 前言
SonarQube是一个开源的代码质量管理平台,提供了代码质量管理的各种功能,例如静态检查、代码度量、代码审查等等。
作为一个开源的开发者,对自己写的开源项目还是很有必要进行扫描一下,没有人能保证他写出没有bug 的程序,但是通过一些工具可以降低我们写bug的概率。
2. SonarQube的安装
你可以直接去SonarQube的官网查看安装文档,上面写的还是非常详细的。
链接:https://docs.sonarqube.org/latest/setup-and-upgrade/install-the-server/
2.1 安装环境
这里使用的安装环境是:centos7 + docker
使用数据库为:PostgreSQL
SonarQube所支持的数据库有:Oracle, Microsoft SQL Server,所以如果你的DB不是PostgreSQL也没关系。
2.2 创建SonarQube对应的文件夹
mkdir /dockerData/sonarqube/sonarqube_data
mkdir /dockerData/sonarqube/sonarqube_extensions
mkdir /dockerData/sonarqube/sonarqube_logs
这里创建的三个文件夹是用来放置SonarQube之后会存放的数据和插件以及日志,在SonarQube的官网安装教程中更加推荐我们使用docker volume create
的方式,这是因为 volume 存储在 Docker Host 文件系统的一个路径下,这个路径是由 Docker 来进行管理,路径默认是 /var/lib/docker/volumes/
,非 Docker 的进程不能去修改这个路径下面的文件,所以说 Volumes 是持久存储数据最好的一种方式。
相关知识:Docker 数据存储
这里为了方便我们之后安装插件,所以没有采取这种方式的安装。
2.3 拉取镜像
docker run -d --name sonarqube \
-p 9000:9000 \
-e SONAR_JDBC_URL=jdbc:postgresql://ip:port/sonarqube?currentSchema=sonar_schema \
-e SONAR_JDBC_USERNAME=postgresql \
-e SONAR_JDBC_PASSWORD=password \
-v /dockerData/sonarqube/sonarqube_data:/opt/sonarqube/data \
-v /dockerData/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions \
-v /dockerData/sonarqube/sonarqube_logs:/opt/sonarqube/logs \
sonarqube:9.9.0-community
在这个命令当中,我们指定了容器的启动的端口,和SonarQube连接DB的地址,可以根据你使用的DB进行调整。最后通过-v
命令挂载了服务器的目录到docker容器当中
启动完成之后,使用你的ip:端口
进行访问,应该有这样的界面。帐号名和密码都是admin,第一次登录之后 便会要求你更改密码。
如果你的SonarQube启动失败,可以通过docker logs sonarqube
查看错误日志,一般情况下主要的原因有:
- 连接DB失败:检查用户名和密码,或者防火墙
- sonarqube写入文件没有权限:因为我们是通过挂载文件夹的形式,sonarqube会对
dockerData/sonarqube/
下进行写入文件,需要检查sonarqube是否有足够的权限
3. 对一个SpringBoot项目进行扫描
这里我们用一个简单的SpringBoot例子进行试试,你可以在github中找到:https://github.com/MingGH/demo-springboot-simple
或者直接使用你自己的项目也可以。
回到SonarQube,点击右上角的Create Project创建项目,一般来说,使用项目名就好
点击Set Up
SonarQube提供了多种方式进行触发扫描,这里我们选择Locally
创建一个token,并设置过期时间
因为这个项目使用的maven,所以我这里便选择了maven进行本地触发扫描。
复制生成的这一段命令,到我们本地项目目录下进行执行
执行完成之后,网页便会自动刷新,如:
如果代码中存在问题,那么在Bugs,Vulnerabilities,Security Hotspots中可以点进去查看详细的信息。
4. 安装多分支扫描分析插件
在SonarQube社区版中,是只能有一个分支被扫描的,需要通过插件的形式来扩展这部分功能