安装步骤
========================
1. 下载hudson.war然后把它部署在jboss下面
wget -c http://hudson-ci.org/latest/hudson.war
2. 启动jboss
3. 输入http://ip:8080/hudson进入hudson,配置jdk,maven参数
4. 下载sonar,然后解压。
wget -c http://dist.sonar.codehaus.org/sonar-2.2.zip
5. 安装mysql
创建一个sonar的数据库。
CREATE DATABASE sonar;
创建一个sonar用户:
授权可以通过本地地址访问
GRANT
ALL
PRIVILEGES
ON *.*
TO
'hudson'@
'localhost' IDENTIFIED
BY
'sonar'
WITH
GRANT
OPTION;
flush privileges;
授权可以通过远端或IP地址访问
GRANT
ALL
PRIVILEGES
ON *.*
TO
'hudson'@
'%' IDENTIFIED
BY
'sonar'
WITH
GRANT
OPTION;
6. 配置sonar
修尬$sonar/conf/sonar.properties
打开里面的mysql配置,注视掉默认的DB配置
sonar.web.host: ip地址
sonar.web.port: 9000
sonar.web.context: /
sonar.web.port: 9000
sonar.web.context: /
#
----- Global database settings
sonar.jdbc.username: hudson
sonar.jdbc.password: sonar
sonar.jdbc.maxActive: 10
sonar.jdbc.maxIdle: 5
sonar.jdbc.minIdle: 2
sonar.jdbc.maxWait: 5000
sonar.jdbc.minEvictableIdleTimeMillis: 600000
sonar.jdbc.timeBetweenEvictionRunsMillis: 30000
sonar.jdbc.username: hudson
sonar.jdbc.password: sonar
sonar.jdbc.maxActive: 10
sonar.jdbc.maxIdle: 5
sonar.jdbc.minIdle: 2
sonar.jdbc.maxWait: 5000
sonar.jdbc.minEvictableIdleTimeMillis: 600000
sonar.jdbc.timeBetweenEvictionRunsMillis: 30000
7. 进入到hudson web界面里面的插件管理,
选择并安装sonar插件
安装成功后选择重启hudson
8. 进入到hudson web系统,进行系统配置
配置sonar的如下信息并保存:
1. Server URL : http://localhost:9000
2. Database URL: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
3. Database login : hudson
4. Database password : sonar
5. Database driver:com.mysql.jdbc.Driver
9. 进入sonar目录启动sonar
$sonar/bin/(系统类型)/sonar.sh start
10. 创建一个hudson任务(配置中选中sonar),然后执行任务
11. 进入http://localhost:9000/ (默认用户为:
admin/admin)
就可以看到sonar的执行结果,
或者点击hudson的sonar连接也可以看到。
二、Hudson中工程配置
在
Subversion的
Repository URL处,增加源代码的位置
(1)在Build Triggers中选择
Build periodically
,
在调度内容中填写
0 1 * * *
,使任务自动定时在每天凌晨1点钟运行。Schedule的语法类似于Linux cron。
(2)在Post-build Actions中选择Publish FindBugs analysis results来生产findbugs统计结果报告,配置信息为:“**/target/test.findbugs/findbugs.xml”
(3)在Post-build Actions中选择Publish JUnit test result report来生成JUnit统计结果报告,配置信息为:“**/target/test.report/*.xml”
(4)在Post-build Actions中选择Publish HTML reports,用html形式来展现统计结果,比如要展示searchweb的单元测试结果,自动化运行结果,自动化的覆盖率。可以点击”Add”来添加要显示的东西。
(5)在Post-build Actions中选择Publish Cobertura Coverage Report来生成单元测试覆盖率报告。配置信息为:“**/target/test.cobertura/coverage.xml”
(6)运行任务: 点击页面左侧的“立即生成”,
done!
-------------------------------------------------------------------
From: http://macrochen.javaeye.com/blog/707064
hudson配置使用经验总结
将test与代码检查工具插件分成不同的job来处理, test job用来对每次修改进行测试, 代码检查job则在每次发布前手工启动
在我们的持续集成环境中, hudson 1.341 + jboss 4.2 这个版本组合比较稳定, hudson 版本太高会出现 dom4j相关的异常, 搞了好久没解决:(
比较常用的插件是findbugs, cobertura组合, 其他没用过, 前者用来检查代码中的一些低级错误, 后者用来统计代码覆盖率, 覆盖率工具还有clover, emma, 前者收费商用, 生成的report更炫, 更强(里面继承了代码复杂度, 代码风险评估等静态分析功能), 后者emma的report相对要简易
在使用cobertura之后, 如果是maven, goals and options不需要写test, 否则会出现test phase 跑两遍, 在跑cobertura之前默认会跑test. 比如这样设置:-U clean cobertura:cobertura
在hudson 1.341这个版本, cobertura maven plugin版本采用2.2就好, 太高(比如2.3)在生成report的时候会有一堆的语法检查warning, 虽然无大碍.
在使用cobertura的时候有一个限制, 就是如果test跟要测试的project是分离的, 换句话说如果test是一个单独的project, 那么这个貌似是没法对被测试的project统计代码覆盖率, 而clover则没有这个限制, 要钱的就是不一样啊!
关于cobertura的maven plugin配置, 本人认为hudson上的配置太繁琐, 其实可以简单的配置为:
对clover的maven命令也有一些技巧, 一般要这样配置:
-U clean clover2:setup test clover2:aggregate clover2:clover
如果将test放在clover2:setup前面, 则clover的一些设置将会被test被清掉, 导致有些report可能没法输出
所以最终我们的选择hudson 1.341 + jboss 4.2 +clover plugin + findbugs plugin
在我们的持续集成环境中, hudson 1.341 + jboss 4.2 这个版本组合比较稳定, hudson 版本太高会出现 dom4j相关的异常, 搞了好久没解决:(
比较常用的插件是findbugs, cobertura组合, 其他没用过, 前者用来检查代码中的一些低级错误, 后者用来统计代码覆盖率, 覆盖率工具还有clover, emma, 前者收费商用, 生成的report更炫, 更强(里面继承了代码复杂度, 代码风险评估等静态分析功能), 后者emma的report相对要简易
在使用cobertura之后, 如果是maven, goals and options不需要写test, 否则会出现test phase 跑两遍, 在跑cobertura之前默认会跑test. 比如这样设置:-U clean cobertura:cobertura
在hudson 1.341这个版本, cobertura maven plugin版本采用2.2就好, 太高(比如2.3)在生成report的时候会有一堆的语法检查warning, 虽然无大碍.
在使用cobertura的时候有一个限制, 就是如果test跟要测试的project是分离的, 换句话说如果test是一个单独的project, 那么这个貌似是没法对被测试的project统计代码覆盖率, 而clover则没有这个限制, 要钱的就是不一样啊!
关于cobertura的maven plugin配置, 本人认为hudson上的配置太繁琐, 其实可以简单的配置为:
- <plugin>
- <groupId>org.codehaus.mojogroupId>
- <artifactId>cobertura-maven-pluginartifactId>
- <version>2.2version>
- <configuration>
- <formats>
- <format>xmlformat>
- formats>
- configuration>
- plugin>
对clover的maven命令也有一些技巧, 一般要这样配置:
-U clean clover2:setup test clover2:aggregate clover2:clover
如果将test放在clover2:setup前面, 则clover的一些设置将会被test被清掉, 导致有些report可能没法输出
所以最终我们的选择hudson 1.341 + jboss 4.2 +clover plugin + findbugs plugin