持续集成工具Hudson入门介绍(结合Ant)

前言:最近几天在学习持续集成工具——Hudson的使用,但由于我原来对“持续集成”其实也并不十分理解,所以还走了些弯路,于是决定整理一个最基本的持续构建与Hudson的入门介绍。

一、基础概念介绍

本小节主要是介绍一些基本概念,如果已经了解的就可以忽略本节。

1、什么是持续集成(Continuous Integration)


(以下转自:http://dev.firnow.com/course/3_program/gcs/20071120/87085.html)

引用
这个名词已经在软件开发领域持续了N年,一个比较简单的定义如下:

持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。更具体的解释可以参考Martin fowler的Continuous Integration 。



2、什么是Hudson
Hudson 是近年来应用得比较广泛的一个持续集成工具。与另一个也是使用非常广泛的工具CruiseControl比起来,Hudson显得更轻量、简单易用。

(以下转自:http://www.oschina.net/p/hudson)

引用
Hudson拥有的特性包括:
• 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。
• 易于配置-所有配置都是通过其提供的web界面实现。
• 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。
• 生成JUnit/TestNG测试...


hudson项目主页(日本人做的……):http://hudson-ci.org/

3、什么是Ant
(以下资料转自网上,但哪里是原出处已不可考)

引用
Apache Ant 是一个基于 Java 的生成工具。据最初的创始人 James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具) 的首字母缩写。

C 或 C++ 中的传统项目经常使用 make 工具来做这件事情,其中生成任务是通过调用 shell 命令来执行的,而依赖关系定义在每个生成文件之间,以便它们总是以必需的顺序执行。

Ant 与 make 类似,它也定义生成文件之间的依赖关系;然而,与使用特定于平台的 shell 命令来实现生成过程所不同的是,它使用跨平台的 Java 类。使用 Ant,您能够编写单个生成文件,这个生成文件在任何 Java 平台上都一致地操作(因为 Ant 本身也是使用 Java 语言来实现的);这就是 Ant 最大的优势。

Ant 的其他关键优势包括其突出的简单性和无缝地使用自定义功能来扩展它的能力。

我个人觉得,通俗点说就是,ant相当于可以跨平台的批处理工具,而且能干的事情也比window的bat要多

Ant不是构建工具的唯一选择,Apache下还有另外一个构建工具,叫做Maven,也可以跟Hudson进行集成,不过Maven我还不会用,所以这里就只讲Ant了……

Ant项目主页:http://ant.apache.org


二、用Hudson和Ant进行持续集成

1、Hudson工作原理

Hudson的工作原理其实就是持续集成的工作原理。如下图所示:



具体描述如下:
[1] 程序员通过SVN客户端提交代码。
[2] Hudson用svnupdate命令从svn中更新代码到本地。
[3] Hudson调用项目里的Ant或者Maven脚本进行构建。
[4] 构建结束,生成报告并记录日志,发送结果。
[5] 用户可随时通过浏览器在Hudson上浏览构建结果。

由此可以看出,在这个持续集成里头,Ant才是构建工作的核心,而Hudson则相当于一个调度者、管理者。

2、Meet Hudson Step by Step(一个简单例子)

我们现在来对Hudson进行一个初步的使用,本例子里面只涉及到必要的、最简单的配置

首先是必要条件:①jdk要装好,tomcat装好(虽然hudson不用tomcat也可以自己启动,不过我想大家一般都会有tomcat的,所以这里就用tomcat来运行hudson)。②至少有一种配置管理工具,我这里用的是SVN。Hudson默认支持SVN和CVS,如果是其他的话需要另外安装Hudson插件。③ant的build.xml要先写好,因为具体的构建工作都需要通过它来执行。附件build.rar里提供了一个比较简单的build.xml供参考。

操作步骤如下:

[1] 在两个项目的主页里下载好Hudson.war和ant压缩包,把ant的压缩包解压到某个目录下。


[2] 最好先在环境变量设置里JAVA_HOME设好,把ant的bin目录添加到path中(因为我以前就是配好了的,虽然似乎不加也可以,不过最好还是加上吧)

[3] 把hudson.war部署到tomcat。【注:我把hudson.war包直接放到webapps目录下,然后启动tomcat,不成功,tomcat提示无法解压zip文件的异常,但通过tomcat管理界面来部署war包却可以,原因暂时不明。】

[4] 部署成功后,访问http://localhost:8080/hudson,打开hudson管理界面

[5] 选择“系统管理”-->“系统设置”,配置好“JDK”和“Ant”两项。




[6] 回到hudson首页,选择“新建任务”,输入任务名称,并选择“Build a free-style software project”(如果用Maven构建的话就选第二个)



[7] 进入下一页,在“Source Code Management”中,选择Subversion,填写svn url
【注:ant的build.xml放在这个路径的根目录下】



[8] 在“Build”里,选择Invoke Ant,选择前面配置的那个ant


target里面填写需要运行的build.xml的target,如不填即执行build.xml里指定的default target。

[9] 其他配置暂时可以不管,Save之后点击左边的“立即生成”看看,如无意外,应该能看到构建成功了。


3、下一步 到此,你已经对Hudson有了一个基本的了解。接着就可以继续更改hudson的Job配置,可以设置构建的触发方式、构建的周期、邮件服务器配置(用来发送构建结果的)等等,这些功能大家要用的时候就自己摸索啦~~