下载地址:https://www.sonarqube.org/downloads/
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zip #下载到当前目录
unzip sonarqube-6.4.zip #解压到当前目录
cd sonarqube-6.4
vi conf/sonar.properties #编辑配置文件,加入分割线内代码
---------------------------------------
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&allowMultiQueries=true
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.web.port=9000
---------------------------------------
登陆到mysql,创建一个名为sonar的数据库
create database sonar;
./bin/linux-x86-64/sonar.sh console & #console 表示显示启动日志,用start也可以,&表示启动完成后回到命令行
模式,不会卡在启动完成界面,也不会因为退出命令行而终止进程;有些版本linux需要运行exit命令后再关闭ssh窗口,不然也会宕掉
启动成功后通过 http://ip:9000 即可访问sonar,默认账号admin,密码admin,如果开启了iptables或者firewalld防火墙,需要把9000端口加入允许通过列表
中文语言包:
在https://github.com/SonarQubeCommunity/sonar-l10n-zh上找到对应sonar版本的中午jar包下载后上传至sonar根目录下的extensions\plugins目录即可
版本升级:
1、复制 /conf/sonar.properties中相关配置文件到新版本中(注意最好不要直接复制整个文件)
2、到官网的插件版本矩阵https://docs.sonarqube.org/display/PLUG/Plugin+Version+Matrix 去查看新版本与你所需要的插件版本对应关系,下载插件jar包放入extensions/plugins中
3、启动服务端./bin/linux-x86-64/sonar.sh start
4、http://localhost:9000/setup (localhost为你的sonar地址) 点击upgrade迁移数据库(一般不会出问题无需备份,如确有需要可以备份数据库)
配置maven以自动构建:
修改maven配置文件settings.xml
<profiles>节点下添加如下内容:
<profile>
<id>sonar</id>
<properties>
<!--默认数据库配置-->
<!-- <sonar.jdbc.url>jdbc:h2:tcp://localhost:8000/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>org.h2.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password> -->
<!--mysql数据库配置-->
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>org.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password>cmiot</sonar.jdbc.password>
<!--sonar生成配置-->
<sonar.projectKey>${project.artifactId}-${project.version}</sonar.projectKey>
<sonar.projectName>${project.artifactId}-${project.version}</sonar.projectName>
<sonar.projectVersion>${project.version}</sonar.projectVersion>
<sonar.sources>src/main/java</sonar.sources>
<sonar.language>java</sonar.language>
<sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>
<sonar.host.url>http://localhost:9000</sonar.host.url> <!-- Sonar服务器地址 -->
<sonar.scm.disabled>true</sonar.scm.disabled> <!-- 解决svn冲突问题 -->
</properties>
</profile>
<activeProfiles>节点下添加如下内容:
<activeProfile>sonar</activeProfile>
运行maven命令 mvn sonar:sonar 即可把结果上传至sonar服务器。
集成jenkins:
在构建命令中加入如下代码即可把单元测试覆盖率和sonar分析结果上传至sonar服务器:
cd ~/.jenkins/workspace/ProjectName
mvn org.jacoco:jacoco-maven-plugin:prepare-agent clean install
mvn sonar:sonar
遇到的错误:
后面遇到一个在错误:某些项目可以上传报告至sonar某些项目不行,百思不得其解,苦逼了好久,后来在sonar根目录下logs/web.log中发现以下信息:Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1109540 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
才知道是mysql的max_allowed_packet参数过小造成的,于是在my.cnf的[mysqld]下找到该参数,原来为1M,改为2M。重启mysql,问题解决。
基于Docker安装(未完善):
docker pull 等方法先下载一个sonar镜像
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube #前面的端口为外部端口,后面的为docker内部端口