本文搭建的代码自动化测试平台:sonar+Jenkins+maven是在centos6.8版本上进行的,本章主要介绍sonar+Jenkins+maven环境的搭建,项目配置集成将在接下来的章节进行详细介绍。
搭建的过程中需要的各软件版本如下:
sonar:7.2.1
MySQL:5.7.22
Apache tomcat :8.5.32
jenkins:2.134
jdk8
maven:3.5.4
git:采用yum安装
一、安装配置sonar
1、sonar介绍
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。sonar最大的特点就是插件化,可以根据不同的场景需求进行插件化安装,以Java代码检测为,但同时可以检测Python、C++等多种语言。
通过客户端插件分析源代码,sonar客户端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通过各种不同的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到sonar的数据库,通过sonar web界面对分析结果进行管理,架构图为:
sonar架构图
可以从七个维度检测代码质量:
(1)复杂度分布(complexity):代码复杂度过高将难以理解
(2) 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
(3) 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
(4) 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
(5) 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
(6) 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
(7) 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度
2、sonar安装配置
本文介绍的Sonar以官网最新的版本:sonar-7.2.1版本为演示依据,sonar各版本下载可以参考sonar官网:https://www.sonarqube.org/
将下载的sonar-7.2.1.zip上传至服务器的/iyunwen/server/下面,重命名为:sonarqube。
jdk8所在目录为:/iyunwen/server/jdk8,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
snoar需要将代码检测上传至数据库,此处用MySQL,数据库MySQL安装在/iyunwen/server/mysql,MySQL采用5.7.22版本,下载链接为:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
(1)、修改启动jdk
修改文件路径:/iyunwen/server/sonarqube/conf/wrapper.conf,需要制定Java的jdk版本,sonar启动采用jetty启动,为Java容器
注意:wrapper.java.command=/iyunwen/server/jdk8/bin/java一定要指定到jdk下面的Java,不能只指定/iyunwen/server/jdk8,否则启动的时候报如下错误:
--> Wrapper Started as Daemon
Launching a JVM...
Unable to start JVM: Permission denied (13)
JVM exited while loading the application.
JVM Restarts disabled. Shutting down.
(2)、MySQL中创建sonar数据库账号密码:
创建sonar访问数据库:robot3_sonar
指定sonar访问数据库的账号:sonar,密码:Sonar2018
sonar创建的数据库和账号可以根据实际情况指定,此处不用导入数据库,表明sonar数据库是在启动的过程中自动创建数据库
(3)、修改sonar配置文件,指定数据库
修改配置文件所在目录:/iyunwen/server/sonarqube/conf/sonar.properties
设置sonar连接数据库的连接信息,如下图
(4)启动sonar:
进入/iyunwen/server/sonarqube/bin/linux-x86-64------部署的服务器为centos6.8,所以进入sonar/bin/linux-x86-64下执行start.sh,执行命令为:
./start.sh start,会有如下报错(日志路径为:/iyunwen/server/sonarqube/logs/sonar.log)
sonar启动不能使用root权限启动,创建sonar用户启动:
加入开启启动项:vim /etc/rc.local,su sonar -lc "/iyunwen/server/sonarqube/bin/linux-x86-64/sonar.sh start"
(5)访问sonar后台服务:地址为ip:9000,本文为192.168.1.160::9000,账号和密码默认为:admin/admin
(6)、汉化语言包:在administration--->marketplace--->plugins中找到chinese packet
install之后提示重启后,整个界面就变成了中文显示
3、jenkins安装
jenkins官网地址为:https://jenkins.io/,下载了最新的2.134版本,采用war的方式利用tomcat容器发布:
tomcat下载可以通过官网:https://tomcat.apache.org/download-80.cgi,tomcat解压可以直接使用,此处tomcat解压到/iyunwen/server/下命名为tomcat_jenkins
需要修改tomcat_jenkins一些参数,包括如下设置:
(1)、修改bin/catalina.sh文件,指定jdk和内存大小:
(3)上传jenkins.war文件至webapps下面,启动tomcat: 在webapps下面将解压jenkins文件,将其重命名为ROOT(PS:访问jenkins地址如果不加工程名,需要将jenkins文件重新命名为ROOT,否则地址后面要加jenkins项目名称)
(4)访问配置:
此处的访问地址为:192.168.1.160:8080,如果在tomcat部署war包的过程中没有将jenkins重命名为ROOT,则访问地址为:192.168.1.160:8080/jenkins
解锁jenkins,根据提示获取对应的文件内容,输入即可解锁
4、maven安装配置
maven的官网下载地址为:http://maven.apache.org/download.cgi,此处下载的是zip文件
将maven压缩包解压到/iyunwen/server下面,重命名为maven
5、jenkins集成git+maven+sonar配置
(1)插件配置
登录jenkins后台,找到系统管理---->插件管理---->可选插件
其中必选安装的插件有git相关、maven相关、sonar相关,详细清单如下:
安装完成以后,可以在已安装中查看
(2)全局工具配置
jenkins中,系统管理--->全局工具配置 全局工具配置主要配置maven、git、sonar、jdk等的环境变量,非常重要,对于存有疑问的地方,可以点击每一个选项中的问号(?)会出现相关提示。
a、maven配置
此处maven安装在/iyunwen/server/maven下面
b、jdk配置
jdk采用的jdk8,路径为/iyunwen/server/jdk8
c、git配置
git是在服务器端采用yum安装:yum -y install git,git路径为/usr/bin/git
d、sonar-scanner配置
由第一章的架构图知,sonar-scanner为客户端,jenkins通过sonar调用检测代码
sonar-scanner下载地址为:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
下载Linux版本的sonar-scanner,上传服务器至/iyunwen/server下面,重命名为sonar-scanner,对于sonar在jenkins的配置为
e、maven配置
(3)、系统设置
在jenkins中,系统管理---->系统配置中
a、maven项目内存配置
b、sonar的server端信息配置
sonar server的配置有2项,一个为server的地址信息,一个为通信的token,如下图
对于sonar的token生成方式,需要admin登录sonar,右上角--->我的账号---->安全---->生成令牌,令牌的名字可以任意填写,将生成的token填写至jenkins server配置信息中
6、开始构建项目进行代码检测
jenkins后台---->新建任务,如下图
点击完成之后,进入配置界面,此处的配置需要额外注意,有一些特别需要注意的点,否则会出现问题
(1)源码管理
指定项目的git地址
此处,如果git没有安装或者没有将jenkins的用户key文件添加到git服务器中,则会报以下错误
此处需要注意的点有:
a、生成key文件添加git服务器
由于jenkins使用的tomcat用户启动,所以添加到git服务中的Key文件必须是tomcat的,如果添加的是root的key文件,此处仍然有问题
/iyunwen/server/sonar-scanner/bin/sonar-scanner -X -Dsonar.host.url=http://192.168.1.160:9000 -Dsonar.language=java -Dsonar.projectName=Task -Dsonar.projectVersion=1.0 -Dsonar.projectKey=Task -Dsonar.sources=src -Dsonar.projectBaseDir=/iyunwen/server/tomcat_jenkins/.jenkins/workspace/task
其中,sonar-scanner指定了sonar的信息,因为需要修改好/iyunwen/server/sonar-scanner/conf/sonar-scanner.properties,修改内容如下:
#----- Default SonarQube server
sonar.host.url=http://192.168.1.160:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.jdbc.url=jdbc:mysql://192.168.1.160:3306/robot3_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar2018
保存以上配置,开始进行构建即完成了task项目的代码检测过程,检测的结果,登录sonar后台,可以查看到