系列文章目录
一 ubuntu20.04搭建Sonarqube服务器&&sonar-scanner
三 sonarqube安装gitlab插件集成gitlab-ci
本文目录
一、Sonarqube简介
SonarQube是一个自动检查代码的工具,用于检测代码中的错误、漏洞和代码异味。支持对多种编程语言的扫描。包括java,c++,c#,js,python,go,php等27种语言(不过现在免费的社区版已经不再支持c++,需要安装插件sonar-cxx)。
此外,它可以与您现有的工作流如Gitlab集成(社区版同样不支持,需要安装插件sonar-gitlab-plugin),以支持跨项目分支和拉取请求的连续代码检查,并将结果反馈。
二、搭建sonarqube服务器
官方文档:https://docs.sonarqube.org/latest/
1.简介
一个sonarqube服务器主要包含三个部分:web服务器、基于Elasticsearch的搜索引擎、计算引擎(负责处理处理分析报告并保存到数据库)。
因此,SonarQube必须要配合JDK和数据库使用。本文采用的环境:
ubuntu20.04+openjdk11.0.11+mysql5.7.22
安装openjdk及mysql过程略。
2.配置mysql数据库
首先在ubuntu中创建一个用户sonar,密码也设为sonar。由于sonarqube不能用root用户启动,我们创建这个专门的非root用户来启动。
sudo useradd sonar
sudo passwd sonar
在mysql中创建用户sonar和数据库sonar
在mysql登陆root用户
mysql -u root -p
创建用户
create user sonar@localhost identified by 'sonar';
创建数据库
create database sonar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
设置权限
grant all on sonar.* to 'sonar'@localhost identified by 'sonar';
3.下载安装sonarqube
由于gitlab-plugin不支持sonarqube7.7及之后的版本,这里我们选择sonarqube6.7
可以在下面的地址下载各种版本
https://binaries.sonarsource.com/Distribution/sonarqube/
将下载的.zip文件解压到一个文件夹下,我们这里解压到/opt下,命名为sonarqube
unzip sonarqube-6.7 -d /opt
mv sonarqube-6.7 sonarqube
解压后里面的内容有:
bin COPYING elasticsearch lib temp
conf data extensions logs web
其中,启动脚本在bin里,配置文件在conf里,日志在logs里。
打开配置文件:
sudo vim /opt/sonarqube/conf/sonar.properties
编辑数据库的url以及用户名密码等等。
在其中添加:
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
web服务器的端口号默认为9000,可以自己更改:
#sonar.web.port=9000
其他参数详细说明见官方文档。
另一个配置文件是/opt/sonarqube/conf/wrapper.conf。里面的变量wrapper.java.command应该设置为系统中java的路径,如:
wrapper.java.command=java
或:
wrapper.java.command=/path/to/my/jdk/bin/java
4.开启服务器
在ubuntu系统中进入sonar用户
su sonar
进入sonarqube下的启动脚本目录
cd /opt/sonarqube/bin/linux-x86-64
这里bin后面的目录对应我们的系统,根据系统来选择进入哪一个
执行脚本开启服务器:
./sonar.sh start
要想查看服务器状态可以执行
./sonar.sh status
要想关闭服务器可以执行
./sonar.sh stop
开启服务器后,打开浏览器访问http://127.0.0.1:9000,如果在别的机器上访问就用服务器ip替换127.0.0.1。访问成功可以看到类似下面的页面,说明服务器搭建好了。可以用初试默认的管理员用户登陆,用户名和密码都是admin。
还可以将sonarqube注册为系统服务:
首先停止sonarqube
./sonar.sh stop
然后在/etc/systemd/sytem下创建一个叫sonar.service的文件。
sudo vim /etc/systemd/system/sonar.service
内容如下:
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
这样就可以用systemctl来管理服务了。
开启:
sudo systemctl start sonar
查看状态:
sudo systemctl status sonar
关闭:
sudo systemctl stop sonar
设置开机自启动:
sudo systemctl enable sonar
三、安装部署sonar-scanner
1.下载安装sonar-scanner
sonar-scanner执行代码扫描并把扫描结果上传到sonarqube服务器上供用户查看。
可以在官方提供的链接下载,下载以后解压即可,步骤与上面安装sonarqube时相同。
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
解压后包含如下文件夹:
bin conf jre lib
2.配置
进入上面的conf中,编辑配置文件sonar-scanner.properties
sudo vim sonar-scanner.properties
配置服务器url,登陆用户名、密码等。初试默认的管理员用户名和密码都是admin。
sonar.host.url=http://localhost:9000
sonar.login=admin
sonar.password=admin
配置环境变量:
sudo vim /etc/profile
在其中增加:
export PATH=/opt/sonar-scanner/bin:$PATH
其中sonar-scanner是安装sonar-scanner的路径。
source以使改动生效:
source source /etc/profile
查看是否安装成功:
sonar-scanner -v
总结
这样,sonarqube服务器以及sonar-scanner就安装配置完成了,下一章我们介绍c++插件,并使用它对我们的项目做代码检测。