第一部分:安装
一、Java
SonarQube对Java的要求:
查看服务器java版本
java -version
二、MySQL
SonarQube对MySQL的要求:
1、安装:
(1)、配置YUM源
在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/
(2)下载mysql源安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
(3)安装mysql源
yum localinstall mysql57-community-release-el7-11.noarch.rpm
(4)检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
(5)安装MySQL
yum install mysql-community-server
如果之前安装CentOS时选择了安装MySQL,则先用yum remove mariadb*卸载掉才能继续安装
2、启动:
service mysqld start或systemctl start mysqld
查看是否启动:
service mysqld status或systemctl status mysqld出现Active: active (running)和PID代表启动成功
得到默认密码:
grep 'temporary password' /var/log/mysqld.log
用root登录进去:
mysql -uroot -p
注意:如果默认密码带有括号,需要在括号前加转义字符:\,否则会提示如下错误
修改默认密码:
mysql> set password for 'root'@'localhost' = password('********');
设置任何IP都可以远程访问MySQL,没有这行的话之后配置数据库会出错
mysql> grant all privileges on *.* to 'root'@'%' identified by '********';
mysql> flush privileges;
创建sonar数据库和对应的sonar用户
mysql> create database sonar character set utf8 collate utf8_bin;
mysql> grant all privileges on sonar.* to 'sonar'@'%' identified by '********';
mysql> flush privileges;
mysql> quit
3、设置开机启动:yum安装的MySQL默认就是服务,可以用systemctl list-unit-files查看,但开机没启动(disabled状态),所以要用systemctl enable mysqld.service激活开机启动,然后systemctl daemon-reload
MySQL默认配置文件路径: 配置文件:/etc/my.cnf 日志文件:/var/log/mysqld.log 服务启动脚本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid
三、SonarQube
1、拉取SonarQube6.7.5镜像:
https://hub.docker.com/_/sonarqube
这里要拉最新版的:
docker pull sonarqube
2、运行SonarQube
(1)在宿主机上新建目录
mkdir /home/sonarqube/conf
mkdir /home/sonarqube/data
mkdir /home/sonarqube/logs
mkdir /home/sonarqube/extensions
(2)修改上边目录权限
chmod 777 /home/sonarqube –R
(3)运行容器
docker run --name sonarqube -d \
-p 9002:9000 -p 9092:9092 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD="********" \
-e SONARQUBE_JDBC_URL="jdbc:mysql://192.168.1.155:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance" \
-v /home/sonarqube/conf:/opt/sonarqube/conf \
-v /home/sonarqube/data:/opt/sonarqube/data \
-v /home/sonarqube/logs:/opt/sonarqube/logs \
-v /home/sonarqube/extensions:/opt/sonarqube/extensions \
sonarqube
说明:
(1)参数解释
-d: 后台运行容器,并返回容器ID;
-p: 端口映射,格式为:主机(宿主)端口:容器端口。-p 9002:9000是将容器9000端口映射为9002,因为宿主9000端口已经被占用
--name=sonarqube: 为容器指定一个名称;
-e设置环境变量,此变量会传递到COMMAND中
(2)错误解决:
必须要用最新版的SonarQube,如果用6.7.5(参数-d sonarqube:6.7.5),虽然运行不报错,但
docker ps -a后发现STATUS是Exited (1)
用docker logs <CONTAINER ID>查看日志,报错:
Command-line argument must start with -D, for example -Dsonar.jdbc.username=sonar. Got: -p
对比docker ps –a中的COMMAND,发现错误出现在run.sh,为了方便,在docker-sonarqube对应Github开源页面查看
https://github.com/SonarSource/docker-sonarqube/blob/master/6.7.5/run.sh
没有错误
怀疑国内Docker源下载的镜像有问题,运行最新版的SonarQube没有问题
(3)停止SonarQube命令
docker stop <CONTAINER ID>
docker rm <CONTAINER ID>
第二部分:使用
1、在浏览器中输入
http://192.168.1.155:9002
SonarQube服务运行正常
在接下来的页面中,点击"Log in"按钮
账号:admin
密码:admin
点击"Skip this tutorial"跳过
2、开启登录访问权限
进入配置-权限,开启
Force user authentication
Forcing user authentication stops un-logged users to access SonarQube.
标识: sonar.forceAuthentication
作用是所有页面都只允许登录后访问
一、安装简体中文包
1、依次点击页面:Administration – Marketplcae – All – Chinese Pack(Install)
2、当安装状态变为Install Pending时,点击最上边的Rastart按钮
确认
等待重启
3、页面变成中文,但需要重新登录
二、更新插件
回到应用市场,继续更新其他插件。切记:更新和安装时不要关闭浏览器和重启SonarQube,否则会导致无法启动SonarQube
更新一个插件大概需要半小时,当提示"等待更新"时,点击上方的"重启"按钮。基本每更新一个插件都要重启SonarQube服务一次
如遇到在线更新失败的情况,需手动更新
1、从https://docs.sonarqube.org/display/PLUG/Plugin+Library下载需要的插件
SonarC#、SonarCSS、SonarHTML、SonarJava、SonarJS、SonarTS、SonarXML
2、插件传到宿主机192.168.1.155上
3、用下边的命令插件传到sonarqube 的docker里
命令格式:docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
docker cp sonar-css-plugin-1.0.2.611.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-css-plugin-1.0.2.611.jar
docker cp sonar-html-plugin-3.0.1.1444.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-html-plugin-3.0.1.1444.jar
docker cp sonar-java-plugin-5.6.0.15032.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-java-plugin-5.6.0.15032.jar
docker cp sonar-javascript-plugin-5.0.0.6962.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-javascript-plugin-5.0.0.6962.jar
docker cp sonar-typescript-plugin-1.8.0.3332.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-typescript-plugin-1.8.0.3332.jar
docker cp sonar-xml-plugin-1.5.1.1452.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-xml-plugin-1.5.1.1452.jar
进入docker
docker exec -it 4da3dcf3c046 /bin/bash
进入插件目录
cd /opt/sonarqube/extensions/plugins
ls -l
4、删掉旧版本插件(为了安全,移走对应的旧版插件)
mv sonar-java-plugin-5.2.0.13398.jar /home/
mv sonar-javascript-plugin-4.1.0.6085.jar /home/
mv sonar-typescript-plugin-1.6.0.2388.jar /home/
mv sonar-xml-plugin-1.5.0.1373.jar /home/
保存修改后的容器到新镜像(每次在容器中做过修改都要保存为新镜像,防止意外导致容器无法启动)
docker commit 4da3dcf3c046 sonarqube-xywg
5、重启SonarQube
PS:如果镜像没问题,但某些意外导致容器停止,可以用docker restart <CONTAINER ID>命令再次启动容器
三、创建用户
创建一个普通用户用于做代码质量检测
账号:testing
密码:testing
创建完毕
点击上图testing行、令牌列的图标
生成令牌:testing_sonarqube
点击"生成"按钮
复制生成的令牌:bcda4faafae6f34759a898c9766a66ae4c73a441
点击"完成"
四、集成LDAP登录
官方文档:https://docs.sonarqube.org/display/SONARQUBE67/LDAP+Plugin
五、升级SonarQube
1、停止并删除原版本
(1)停止容器
docker stop 4da3dcf3c046
(2)删除容器
docker rm 4da3dcf3c046
(3)删除镜像
docker rmi docker.io/sonarqube
(4)下载新镜像
docker pull sonarqube
2、运行新下载的容器
命令见前章节
3、配置
首次进入http://192.168.1.155:9002/会跳转到http://192.168.1.155:9002/maintenance?return_to=%2F
需要初始化,进入http://192.168.1.155:9002/setup页面按照提示升级数据库
等待操作结束
4、重新操作一遍集成LDAP登录
注意/opt/sonarqube/conf/sonar.properties文件可能不存在,新建一个即可