centos安装使用sonarqube
架构

环境
centos 7
mysql
sonarqube7.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
yum install unzip -y
wget http://tar.matosiki.site/zip/sonarqube-7.3.zip
unzip sonarqube-7.3.zip
mv sonarqube-7.3 /opt/
sudo groupadd sonar
sudo useradd -g sonar sonar
chown -R sonar.sonar /opt/sonarqube-7.3/
|
进入mysql创建数据库
1
2
3
4
5
6
7
|
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT all privileges ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
flush privileges;
|
cd /opt/sonarqube-7.3/conf/
vi sonar.properties
1
2
3
4
5
6
7
8
|
#数据库用户
sonar.jdbc.username=root
#数据库密码
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.web.host=0.0.0.0
sonar.web.port=9000
|
##启动
1
2
3
|
su sonar
/opt/sonarqube-7.3/bin/linux-x86-64/sonar.sh start
|
用户名和密码都是admin
然后紧接着官方引导教程
- 输入name做为tokenn
1
2
3
4
|
matosiki
生成token:6a831d80491fe2e2d43c5d19270741c2b619ac05
把token复制保存下来
|
- 选择项目得开发语言
java>maven
执行测试
1
2
3
|
mvn sonar:sonar \
-Dsonar.host.url=http://172.27.82.119:9000 \
-Dsonar.login=d81cb0f66e3ec4dd87adb782c6bdc67f0f7fe96c
|
- 安装插件
安装汉化包Administrator中MarketPlace搜索chinese
Checkstyle
重启生效
maven 配置sonar使用
配置settings.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://myserver:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
|
jenkins 插件使用sonar
-
jenkins安装插件
**系统管理—>插件管理,搜索一下sonar安装 **
-
配置sonar
系统管理—>系统设置,配置name和server url
粘贴保存下的token
- 配置全局工具
下载地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
wget http://tar.matosiki.site/zip/sonar-scanner-2.8.zip
unzip sonar-scanner-2.8.zip
mv sonar-scanner-2.8 /opt/
vi /opt/sonar-scanner-2.8/conf/sonar-scanner.properties
# 编辑配置文件
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://172.27.82.11:3306/sonar?useUnicode=true&characterEncoding=utf8
# 添加环境变量
vi /etc/profile
export SCANNER_HOME=/opt/sonar-scanner-2.8
export PATH=$PATH:$SCANNER_HOME/bin
# 测试是否设置成功
source /etc/profile
sonar-scanner -h
|
jekins中配置:
global tool configuration > SonarQube Scanner>add>
1
|
SONAR_RUNNER_HOME=/opt/sonar-scanner-2.8
|
- 选择项目
项目构建>配置>构建> Add build step>Execute SonarQube Scanner
execute shell
1
2
3
4
|
export MAVEN_HOME=/opt/apache-maven3.5
export PATH=$PATH:$MAVEN_HOME/bin
cd ${WORKSPACE}
mvn install
|
###千万不要在Task to run中输入值
1
2
3
4
5
6
|
sonar.projectKey=spring-boot-example
sonar.projectName=spring-boot-example
sonar.projectVersion=1.0
sonar.language=java
sonar.sources=${WORKSPACE}
sonar.java.binaries=${WORKSPACE}
|
- 在项目中配置 project properties 文件
编辑sonar-project.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
sonar.projectKey=org.sonarqube:spring-boot-example
#在SonarQube中展示的项目名称
sonar.projectName=项目名称
#在SonarQube中展示的版本号
sonar.projectVersion=1.0
#设置源代码的路径
sonar.sources=/var/lib/jenkins/workspace/spring-boot-example/spring-boot-email/src/
#设置字节码文件的路径
sonar.binaries=/var/lib/jenkins/workspace/spring-boot-example/spring-boot-email/target/classes
sonar.language=java
sonar.sourceEncoding=UTF-8
#设置字报告存放的路径
sonar.jacoco.itReportPath=/var/lib/jenkins/workspace/spring-boot-example/spring-boot-email/reports/jacoco.exec
|
maven检查代码命令
1
2
3
|
mvn clean verify sonar:sonar
或者
mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar
|
报错
elasticsearch 错误
解决方案
查看es日志
cat /opt/sonarqube-7.1/logs/es.log
can not run elasticsearch as root
新建sonar用户 和sonar组
1
2
3
4
5
|
sudo groupadd sonar
sudo useradd -g sonar sonar
chown -R sonar:sonar /opt/sonarqube-7.1
|
failed to obtain node locks
查看进程
ps aux | grep ‘elastic’
获取pid
kill -9 90123
删除elasticsearch data文件
Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
在mysql里设置binlog_format为ROW,此时binlog会增大,但是一般来说对数据复制支持的更好,建议单机高性能环境下使用。
删除初始化得database**sonar*
1
2
3
|
vi /etc/my.conf
binlog_format=ROW
|
参考1
参考2