一、 文档说明
本文档用于说明Jenkins+tomcat+sonar+SVN集成分析代码的搭建过程和可能遇到的问题及问题的相关解决办法;本文档针对内部人员公开,搭建过程中一些工作是为远程访问Jenkins、sonar而做,若是在本地服务器搭建则不需要做相关工作;Jenkins和sonar的搭建环境为Linux、mysql、jdk1.7、jenkins、sonar4.5等,相关的版本说明会在后续文档中详细描述。
二、 jdk1.7安装
1、 准备jdk安装包
去官方网站选择你需要的版本,下载rpm包,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ;
2、 安装jdk
(1)安装rpm包,命令:rpm -ivh jdk-6u45-linux-amd64.rpm
(2)配置JDK环境变量:
a.[root@localhost tools]# vim $HOME/.bash_profile
b.添加下面信息:
#Java Profile
export JAVA_HOME=/usr/java/jdk1.6.0_45 (按照自己的真实目录)
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
c.保存退出;
d.使环境变量生效:[root@localhost tools]#source /etc/profile
e.检测jdk是否安装成功:[root@localhost tools]# echo $JAVA_HOME
/usr/java/jdk1.6.0_45(显示这一行内容表示安装成功)
或者:[root@localhost tools]# java –version
输入上述命令会下显示jdk的版本,表示安装成功
三、 sonar安装与配置
1、 安装sonar
(1)Sonar介绍
Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
(2)下载软件:wget http://dist.sonar.codehaus.org/sonar-3.7.4.zip
(3)解压软件:unzip sonar-3.7.4.zip
(4)配置数据库
Apache Derby 是Sonar自带并且默认安装使用的数据库,此外Sonar对如下数据库提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer等,本文以mysql为例介绍如何配置数据库:
这里首先需要配置数据库信息:
前提是你已经安装了mysql数据库,这里将不做数据库安装的介绍;
登录数据库命令:mysql –uroot -p
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all on sonar.* to sonar identified by 'sonar';
mysql> grant all on sonar.* to sonar@'192.168.5.105' identified by 'sonar';
mysql> flush privileges;
2、 sonar环境配置
(1)配置文件修改
[root@localhostdata]# vim home/dev/sonar-3.7.4/conf/sonar.properties
(这里为sonar的安装路径下的conf文件夹里面的sonar.properties)
修改如下字段(就是配置数据库信息,其他不用动):
# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=root
sonar.jdbc.password=123456(这里为链接数据库的用户名和密码)
#----- Embedded Database (default)
# It does not accept connections from remote hosts, so the
# server and the analyzers must be executed on the same host.
#sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar
# H2 embedded database server listening port, defaults to 9092
#sonar.embeddedDatabase.port=9092
#----- MySQL 5.x
sonar.jdbc.url=jdbc:mysql://192.168.5.105:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
(备注:sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar若是远程部署,链接数据库的地址建议写为IP地址,有时系统不能解析localhost,以防出错)
# By default, ports will be used on all IP addresses associated with the server.
sonar.web.host=192.168.5.105(IP地址)
# Web context. When set, it must start with forward slash (for example /sonarqube).
# The default value is root context (empty value).
sonar.web.context=/sonar(默认为“/”,也可以写成“/sonar”;若是“/”,访问时用IP加端口号就可以访问了,若是写成“/sonar”,访问时需在端口号后面加上“/sonar”)
# TCP port for incoming HTTP connections. Disabled when value is -1.
sonar.web.port=9001(访问端口号)
(2)启动sonar
编辑.bash_profile,添加环境变量SONAR_HOME
$ vi $HOME/.bash_profile
修改成如下内容:
PATH=$PATH:$HOME/bin
SONAR_HOME=$HOME/sonar
退出
export PATH SONAR_HOME
使环境变量生效
Source $HOME/.bash_profile
运行如下命令启动sonar,其它操作系统sonar均提供了启动脚本
$ ${SONAR_HOME}/bin/linux-x86-64/sonar.sh start
或者在bin/ linux-x86-64/下执行 ./ sonar.sh
在浏览器中访问: http://localhost:9001/sonar (上下文默认为“/”,上面配置文件中修改为“/sonar”,访问时就加上“/sonar”),运行界面如下:
四、 sonar-runner安装与配置
1、 sonar-runner的安装
sonar-runner的安装与sonar一致;先下载安装包,然后解压安装包,再添加环境变量
编辑.bash_profile,添加环境变量SONAR_HOME
$ vi $HOME/.bash_profile
修改成如下内容:
PATH=$PATH:$HOME/bin
SONAR_RUNNER_HOME=$HOME/sonar-runner
退出
export PATH SONAR_HOME
使环境变量生效
Source $HOME/.bash_profile
2、 sonar-runner的配置
修改sonar.host.url、sonar.jdbc.url、sonar.jdbc.username、sonar.jdbc.password、sonar的登录名和密码,修改成实际的sonar配置
至此,sonar-runner安装完成
五、 Jenkins安装
1、 Jenkins部署
jenkins.war文件,直接放置在Tomcat的webapps目录下,启动Tomcat服务;
修改tomcat下的配置文件server.xml
2、 访问Jenkins
访问:http://127.0.0.1:8010/jenkins
可以查看到以下界面,jenkins部署完成
3、 遇到的问题及解决办法
(1)tomcat部署Jenkins时不能解压Jenkins文件,是因为tomcat里的server.xml配置文件中多了【xmlValidation="false" xmlNamespaceAware="false】这两个配置项,删除之后重新启动tomcat可以解决问题
(2)tomcat启动是,部署Jenkins时报错【SEVERE: Failed to initialize Jenkins hudson.util.AWTProblem: java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.】
解决办法:原因:因为用到了图形处理,java程序会去寻找linux上的图形界面是否启动
解决:不让java寻找linux图形界面即可,在java 启动时加选项java -Djava.awt.headless=true
实现:如果是tomcat,在/tomcat/bin/catalina.sh中修改为
JAVA_OPTS=-Djava.awt.headless=true
六、 Soanr与Jenkins集成
1、安装sonar jenkins plugin 插件
在Jenkins的插件管理中选择sonar jenkins plugin ,该插件可以使每次构建时都调用sonar进行代码度量
进入配置页面对sonar插件进行配置,如下图:
2、构建项目
点击新建
输入项目名称:
输入SVN地址:
Svn地址有中文,需要配置如下:
增加构建配置中选择 invoke standalone sonar analysis,并按照如下配置(注意设置Encoding编码,根据要分析的代码编码格式设置)
点击保存,进入主页面,可以看到新建的项目,点击项目右边的小箭头,点击立即构建,即开始从SVN下载源码
点击项目运行结果
点击console output即
可查看控制台打印结果。
应用程序构建时就会自动触发Sonar对代码的检查,通过访问sonar即可查看分析结果
3、 遇到的问题及解决办法
Jenkins与sonar集成时需要安装插件,在Jenkins插件管理里面不能安装插件是可以去【https://wiki.jenkins-ci.org/display/JENKINS/SonarQube+plugin】下载插件,然后上传到Jenkins插件管理里就可以了