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

登录 访问地址http://172.27.82.119:9000/

用户名和密码都是admin

然后紧接着官方引导教程

  1. 输入name做为tokenn
1
2
3
4
matosiki

生成token:6a831d80491fe2e2d43c5d19270741c2b619ac05
把token复制保存下来
  1. 选择项目得开发语言

java>maven

执行测试

1
2
3
mvn sonar:sonar \
  -Dsonar.host.url=http://172.27.82.119:9000 \
  -Dsonar.login=d81cb0f66e3ec4dd87adb782c6bdc67f0f7fe96c
  1. 安装插件 安装汉化包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

  1. jenkins安装插件 **系统管理—>插件管理,搜索一下sonar安装 **

  2. 配置sonar

系统管理—>系统设置,配置name和server url

粘贴保存下的token

  1. 配置全局工具 下载地址
 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&amp;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
  1. 选择项目

项目构建>配置>构建> 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}
  1. 在项目中配置 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