一、配置背景:要想介绍Hudson,就要从持续集成开始介绍。持续集成,最开始知道有这个概念的时候是从一本叫做《.NET中的持续集成》,但是本人熟悉的是Java,而不是.Net平台,所以这本书就放下了,没有仔细的看。如今,我们需要用SSH架构开发一个知识管理平台,项目组长给我的任务恰好就是配置持续集成的开发环境。
说了这么半天看来是有点跑题了,还是没有说持续集成是个什么概念。所谓持续集成(Continuous integration)就是:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
上述定义是来源于软件大师:马丁福勒(Martin Fowler),大师就是大师,反正我没看懂。我来说说我的理解,在这里,我用举一个例子来说吧……
现在我们已经进行完了前期的工作(包括:需求的确定,原型的设计等等),到了开始编程的阶段了,我们现在很少有孤军奋战的了吧?大多是小组内各个成员进行配合,编写系统,这样就有个问题,大家的编程环境可能出现差距,大家的代码集中后进行编译运行可能会遇到因为所用类库版本不同或大家提交代码时间不同而导致前面提交的人员要等着别的同志完成代码的编写后才能一起集成编译测试,如果能够计算机能够自动的持续循环如果有新的代码库的更新,就自动进行集成,然后测试,这样将为我们省下大把的时间。持续集成在我的眼中就是这么一回事。不知道讲明白没有?!
二、配置工具:俗话说得好,要想善其事,先要利其器。我们先来看看我们所要用到的工具:
Hudson: Hudson.war
Java: jdk1.6.0_07
Ant : apache-ant-1.8.1
Tomcat: apache-tomcat-6.0.29.txt.exe
SVN: VisualSVN-Server-2.1.5(SVN服务器).msi
TortoiseSVN-1.6.10.19898-win32-svn-1.6.12.msi (SVN 客户端)
首先是持续集成工具,现在比较常用的持续集成工具:
Cruise Control:开源、围绕 Ant 构建。常用,但用户常反映其难以配置、需要编写配置文件。Cruise Control 又称为用于 Java 的“原始”CI 工具。
Apache Continuum:开源、用于构建 Java 项目。由于它是 Maven 的官方构建工具,往往对基于 Maven 的项目提供最好的支持和体验。其管理和配置通过一个基于 Web 的界面进行。
JetBrains Team City — 一种常用的商业 CI 服务器。Team City 的一个独有的特性是,它具有针对几种 IDE 的相应插件,这些插件使开发人员可以在将其更改提交版本控制系统时进行“预测试”提交 — 使用此功能意味着开发人员不可能“中断程序的构建”。其管理和配置通过一个基于 Web 的界面进行。
这里就用我折腾了两天的Hudson作为例子,当然如果使用别的持续集成工具也可以。配置使用过程不在本文讨论范围之内。
Java 的jdk不多说了。
Ant大名鼎鼎的java构建工具。
Tomcat为Apache旗下使用最多的服务器。
SVN取代CVS作为现在比较流行的版本控制工具。
由于在本机上进行测试需要使用svn服务器,这里选用VisualSVN作为SVN的服务器端,也可以采用SVN 1.4.5作为服务器,不过需要在控制台中利用命令行进行控制,TortoiseSVN作为SVN客户端工具,小乌龟的图像已经深入人心。
到上面,我们的工具已经备齐,开始配置。