持续集成就是快速且高频率地自动构建 项目的所有源代码 ,并为项目成员提供丰富的反馈信息。
一次完整的持续集成包含如下步骤:
1)持续编译 (旧代码应全部删除,重新编译所有最新代码)
2)持续数据库集成 (清理数据库,重新创建表结构)
3)持续测试 (单元测试仪 + 集成测试)
4)持续审查 ( Checkstyle 、 PMD 、测试覆盖率,频率可以低一些)
5)持续部署
6)持续反馈
持续集成的好处 :
1) 尽早暴露问题。(修复问题成本低)
2) 减少重复操作。
3) 简化项目发布。
4) 建立团队信心。
Hudson(http://hudson-ci.org ) 提供了灵活的插件扩展框架,许多公司都选择了它,如 JBoss (http://hudson.jboss.org ) 和 Sonatype (https://grid.sonatype.org/ci ) 。
Hudson 必须运行在 JRE1.5 以上。
可以从http://hudson-ci.org/下载最新的安装包。下载完成后获得一个hudson.war。
下载后为 hudson.war 可以直接运行。
java –jar hudson.war
其默认端口为 8080 ,可以访问 http://localhost:8080 。也可以使用 --httpPort 指定端口:
java –jar hudson.war –httpPort=8082
也可以将 war 包部署到 Jetty , Tomcat 等 Web 容器中。( context path 为 /hudson )。
1) 启动
下载后为 hudson.war 可以直接运行。
java –jar hudson.war
其默认端口为 8080 ,可以访问 http://localhost:8080 。也可以使用 --httpPort 指定端口:
java –jar hudson.war –httpPort=8082
2) 停止
在命令行按下Ctrl+C键。
也可以将war包部署到Jetty,Tomcat等Web容器中。(context path为/hudson)。
1) 建立installTomcat.bat文件
2) 在文件中填入以下内容:
rem 安装Hudson服务
set CATALINA_BASE=D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35
set CATALINA_HOME=D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35
call D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35\bin\service.bat install Hudson
说明:CATALINA_BASE设置的是tomcat的根目录。
注意:tomcat需要下载windows专用版的tomcat才会有service.bat文件。
3) 运行该bat文件
1. 安装svn
2. 创建svn仓库
3. 将代码导入到仓库中
导入前应先使用mvn clean清除项目输出文件。
然后将account项目的代码导入到“svn仓库/account/trunk”中。
在 Hudson 登录页面左边的“管理 Hudson ” (Manage Hudson), “系统管理”( Configure System )中可以配置多个 JDK ( Hudson 可以自动安装 JDK ),多个 Maven(Hudson 可以自动安装 Maven ), Email notification 配置(SMTP 服务器,接收者列表等)。
Hudson 在新建任务时,可选的任务类型有“ Build a free-style software project ”(不仅支持 Maven ,还支持 Ant 、 Shell 等其他构建工具)和“ Build a maven2 project ”(使用 Hudson 自带的 Maven )。前者需要的配置多一点,后者会使用Hudson自带的maven。除非你已经十分熟悉Hudson,否则推荐使用free-style类型。
下面依次介绍free-style任务的各种配置。
Discard Old Builds选项配置如何抛弃旧的构建。如果每次构建相关的文件都保存下来,磁盘空间将被渐渐消耗光。Hudson为此提供了两种方式让用户选择保留哪些构建任务的相关文件:
1) Days to keep builds:如果其值为非空的N,就仅保留N天之内的构建文件。
2) Max # of builds to keep:如果#非空,就仅保留最多#个最近构建的相关文件。
如:保留10个最近的构建,在Max # of builds to keep一栏中输入“10”即可。
在项目配置页面Source Code Managerment部分,选择Subversion,然后在Repository URL文本框中输入项目的Subversion仓库地址(如:svn://127.0.0.1/account/trunk)。
然后单击enter credential填写配置仓库的认证信息。
Hudson 支持三种方式触发构建:
1) Build after other projects are built:在其他项目构建完成后构建本项目。
2) Build periodically:周期性的构建本项目。
3) Poll SCM:周期性的轮询源码仓库,发现有更新时构建本项目。
一般使用第三种。
Hudson 使用著名的 UNIX 任务调试工具Cron(http://en.wikipedia.org/wiki/Cron)所使用的配置方式来配置轮询代码仓库的频率:用 5 个字段表示不同的时间单位,字段之间用空格分隔:分(0-59) 时(0-23) 日(1-31) 月(1-12) 星期几(0-7,0、7都表示周日)。
几种特殊匹配符:
1) * :匹配范围内任何值
2) M-N :匹配 M-N 范围内任何值
3) A , B , … , Z :逗号匹配多个值
4) */X 或 M-N/X :范围内能被 X 整除的
星期几与日期是或的关系。
对于一个健康的项目,常见的做法是:每隔10分钟轮询代码仓库,Schedule对应的配置为:*/10 * * * *。
可以用“#”在Schedule配置文本框中进行注释。
配置Hudson使用运行Maven命令构建项目:
1)单击Build部分的Add build step,选择Invoke top-level Maven targets;
2)然后选择一个安装好的Maven版本,输入maven命令如:clean deploy即可。
Hudson 的当前任务状态有:
蓝色:最近一次构建是成功的
红色:最近一次构建是失败的
黄色:最近一次构建成功但不稳定(测试失败了)
灰色:未被执行过或者已被禁用
任务长期的状态的天气情况有:
晴: 80% 以上的集成是成功的
晴有云: 60%-80% 的集成是成功的
多云: 40%-60% 的集成是成功的
雨: 20%-40% 的集成是成功的
雷雨: 20% 以下的集成是成功的
Maven 可以自定义视图从而对任务进行分类,并自定义想监控的属性列。
在任务配置页面中可以设置”Post-build Actions”,选择”Publish JUnit test result report”,将”Test report XML”设为**/target/surefire-reports/TEST-*.xml,Hudson就会在任务状态页面中显示maven-surefire-plugin生成的测试报告。
在 Maven 构建命令中添加 –Dmaven.test.failure.ignore ,失败的测试就不会导致构建失败,任务状态就不会变成红色,但会变成黄色。
Hudson 能够在访问源码仓库的时候自动获取相关用户信息并存储。
为用户添加详细信息,如E-mail地址,它将被用来发送邮件反馈。
1) 系统界面(E-mail Notificatoin;
2) 然后输入以下信息:
SMTP server:SMTP邮件服务器地址
Default user email suffix:默认用户邮件后缀。该功能可以在用户没有配置邮件地址的时候(这里假定配置的邮件后缀为“@foo.com”),在Hudson需要发邮件给如mike用户的时候就会发送到 [email protected]。
System Admin E-mail Address:系统管理员邮件地址,即Hudson邮件提示所用的发送地址。
Hudson URL:Hudson服务器地址。
SMTP Authentication:SMTP相关的认证配置。
Hudson 默认会在以下情况发送 email notification:
1) 失败的构建
2) 成功构建后的一次不稳定构建
3) 失败或不稳定构建后的一次成功构建
用户可以配置是不是每一个不稳定构建都发 email 。
Hudson 使用用户目录下的 .hudson/ 目录作为其工作目录,可以通过设置HUDSON_HOME来改变其位置。
userContent 目录可以存放任何用户文件,通过 Hudson 的 Http 服务可以访问该文件(在Http://localhost:8080/userContent 下)。