jenkins集成sonarqube所遇到的坑(linux环境)

第一条建议,安装sonarqube首先看好版本号,不同版本号的安装配置可能不同,如果你想走捷径,看官网对应发布的安装使用教程。https://www.sonarqube.org/downloads/

第二条建议,不要使用root用户安装,es不能用root启动。
jenkins集成sonarqube所遇到的坑(linux环境)_第1张图片

集成jenkins安装教程:https://www.ibm.com/developerworks/cn/devops/1612_qusm_jenkins/index.html

特别注意的点,如果你使用的是svn需要在sonar配置中设置svn的用户名密码,因为sonar会使用自己的svn,如果你使用git可以跳过这个步骤

如果想汉化,可以在maven私服上下载一个sonar-l10n-zh-plugin.jar放入sonar目录下的/extensions/plugins里面,重启sonar即可

SonarQube 平台是由 4 个部分组成:

SonarQube Server
SonarQube Database
SonarQube Plugins
SonarQube Scanner

SonarQube 与 SonarQube-Scanner 的安装与配置

在 SonarQube 网,我们可以下载最新的 Sonar 安装包,本节以 Linux 系统为例,搭建 SonarQube 平台,解压到任意目录,如:unzip sonarqube5.6.zip。

SonarQube 自带了一个 H2 的数据库,当然为了获得更好的性能我们可以指定一个外部的数据库,在这里我们使用 MySQL 数据库。 先在 Mysql 数据库中建立一 个 Sonar 数据库,主要用于存放分析结果的数据,如 图 1 :

图 1. 创建 MySQL 数据库
创建 MySQL 数据库
在这里插入图片描述

进入解压的 SonarQueb 目录,在系统路径里面配好 path,配置如下:

#sonar profile
export
                   SONAR_HOME=/usr/local/sonarqube-5.6.1
export
                   PATH=${SONAR_HOME}/bin:${PATH}

并修改配置文件 sonar.properties,如下:

sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?
useUnicode=true&characterEncoding=
utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
#option properties
sonar.jdbc.driverClassName:com.mysql.jdbc.Driver

jenkins集成sonarqube所遇到的坑(linux环境)_第2张图片
基本配置完成,在命令行启动 SonarQube:进入 SonarQube 安装目录,进入 bin 目录,运行 ./sonar.sh start,打开 http://localhost:9000,如果显示 SonarQube 主页, 则 SonarQube 安装成功。如图 2。
jenkins集成sonarqube所遇到的坑(linux环境)_第3张图片

这里有个坑,就是启动sonarqube只能是非root用户。不然只能通过sonar.log日志查看。原因是启动sonar时需要依赖es,而es不能用root用户启动。所以这里建议用非root用户执行sonar启动脚本。

如果需要关闭 SonarQube,则执行 ./sonar.sh stop
如果需要重启 SonarQube,则执行 ./sonar.sh restart

如果是非root用户,注意目录的权限。否则会抛出以下错误。
jenkins集成sonarqube所遇到的坑(linux环境)_第4张图片
赋权限后就可以正常启动。
在这里插入图片描述

Jenkins 与 SonarQube 集成插件的安装与配置

Jenkins中添加SonarQube插件

jenkins集成sonarqube所遇到的坑(linux环境)_第5张图片
在可选插件中搜索”SonarQube”并安装它,如图 5。

图 5. Jenkins 安装 SonarQube 插件

jenkins集成sonarqube所遇到的坑(linux环境)_第6张图片
进入 Jenkins 系统管理 – 系统设置,配置 SonarQube Server 信息,如图 6。

jenkins集成sonarqube所遇到的坑(linux环境)_第7张图片
进入 Jenkins 系统管理 – Global Tool Configuration,配置 SonarQube Scanner,如图 7。
jenkins集成sonarqube所遇到的坑(linux环境)_第8张图片

新建 Jenkins 项目

登陆 Jenkins 平台,点击新建,如图 8。

jenkins集成sonarqube所遇到的坑(linux环境)_第9张图片
在 Jenkins 项目中使用构建后步骤进行代码分析

使用构建后步骤进行代码分析需要使用 Maven 对代码进行编译,所以需要有 Maven 的配置文件,例如 pom.xml。

为新建的 Jenkins 项目配置构建后操作步骤,在构建后步骤配置窗口中需要填入 Maven 的构建配置 xml 文件,如图 9、10。

jenkins集成sonarqube所遇到的坑(linux环境)_第10张图片
jenkins集成sonarqube所遇到的坑(linux环境)_第11张图片

在 Jenkins 项目构建过程中加入 SonarScanner 进行代码分析

首先需要在新建的 Jenkins 项目的构建环境标签页中勾选”Prepare SonarQube Scanner evironment”,如图 11。

jenkins集成sonarqube所遇到的坑(linux环境)_第12张图片
增加构建步骤 “Execute SonarQube Scanner”,如图 12。
jenkins集成sonarqube所遇到的坑(linux环境)_第13张图片
配置 SonarQube Scanner 构建步骤,在 Task to run 输入框中输入 scan,即分析代码;在 JDK 选择框中选择 SonarQube Scanner 使用的 JDK(注意这里必须是 JDK 不能是 JRE);Path to project properties 是可选择的输入框,这里可以指定一个 sonar-project.properties 文件,如果不指定的话会使用项目默认的 properties 文件;Analysis properties 输入框,这里需要输入一些配置参数用来传递给 SonarQube,这里的参数优先级高于 sonar-project.properties 文件里面的参数,所以可以在这里来配置所有的参数以替代 sonar-project.properties 文件,下面列出了一些参数,sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则),sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录),sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置;Additional arguments 输入框中可以输入一些附加的参数,示例中的-X 意思是进入 SonarQube Scanner 的 Debug 模式,这样会输出更多的日志信息;JVM Options 可以输入在执行 SonarQube Scanner 是需要的 JVM 参数。如图 13。

sonar.projectKey=testSonar
sonar.projectName=testSonar
sonar.projectVersion=1.0
sonar.language=java
sonar.java.binaries=$WORKSPACE/testSonar/target/test-classes/
sonar.sources=$WORKSPACE/testSonar/src

jenkins集成sonarqube所遇到的坑(linux环境)_第14张图片
查看分析结果
在新建的 Jenkins 项目的构建的 Console Output 中可以得到 SonarQube 分析结果的链接,如图。

jenkins集成sonarqube所遇到的坑(linux环境)_第15张图片

jenkins集成sonarqube所遇到的坑(linux环境)_第16张图片

不能插入大的MySQL包。

在这里插入图片描述

jenkins集成sonarqube所遇到的坑(linux环境)_第17张图片

注意一定要重启mysql和sonarqube

参考:https://developer.ibm.com/zh/articles/1612-qusm-jenkins/

https://blog.csdn.net/u011230736/article/details/79439015

https://www.cnblogs.com/zhuyan521/p/13066204.html

https://blog.csdn.net/u011230736/article/details/79439015

你可能感兴趣的:(持续集成)