天天看点

sonarqube安装使用与jenkins集成

下载地址: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内部端口