Hudson + Ant + SVN + Tomcat配置详解

一、配置背景:

要想介绍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客户端工具,小乌龟的图像已经深入人心。

 

         到上面,我们的工具已经备齐,开始配置。

 

三、配置步骤:

首先是Java的jdk安装,如果我没记错的话,java的jdk安装后环境变量就应该已经配置好了。

 

         Ant的配置:

         ant下载后应该是一个压缩包,解压后,解压后所在路径这里用 ${ant_path} 代替。打开系统环境变量,新建ANT_HOME变量,值为 ${ant_path} 。然后再在系统变量path中加入如下内容:

;%ANT_HOME%\bin;%ANT_HOME%\lib;

         至此,Ant配置完毕。

 

         安装Tomcat,如果你的tomcat是exe文件,就直接安装,否则,将压缩包解压到一个路径,我这里用 ${tomcat_path} 代替。同上打开系统环境变量,新建CATALINA_HOME变量,值为${tomcat_path}。

path变量中加入如下代码:

;% CATALINA_HOME%\bin;

 

classpath变量中加入如下代码:

; % CATALINA_HOME%\lib;

然后,转到${tomcat_path}下的bin文件夹下,有个startup.bat(for windows系列系统)或startup.sh(for unix系列系统)。如果是利用exe安装的启动tomcat服务器是在系统的管理下的服务中进行启动。至此,tomcat已配置完成并已经启动。

 

我们使用的Hudson.war,原来做过java web开发的一眼就能够看出来,这玩意扔到tomcat的webapps下就能够运行了,我们就这么干。

打开浏览器,输入如下地址:

 

http://localhost:8080/

 

 

这就是传说中那只小猫,看到它说明我们的tomcat已经安装成功,并且已经启动。现在我们将Hudson.war复制到${tomcat_path}/webapps文件夹下。在浏览器中输入如下地址:

http://localhost:8080/hudson

如果成功得到如下页面:

 

其中可以看到我部署了两个项目。

配置Hudson的第一步:

选择系统设置。

出现如下页面:


选择系统设置。出现如下页面:

 

图中路径描述了Hudson生成项目输出的目录,这个可以改到一个我们自己熟悉的目录,这里我就不改了。

下面是jdk配置:

因为hudson中可以配置多个jdk,这里要先给这个jdk起一个别名以识别不同的jdk,我选择使用java_jdk。在下面的JAVA_HOME中输入环境变量中的JAVA_HOME变量的值就可以了。我们可以通过点击新增jdk按钮增加不同的jdk。

 

下面是Ant的配置:

 

与jdk配置过程差不多,给出ant的路径,为ant起别名。

 

下面是maven的配置:

因为本文没有涉及maven配置的过程。

 

下面是版本控制工具配置:

由于我们使用的是svn,所以cvs那栏可以空着,在下面的subversion中配置使用的svn版本。我使用的是svn 1.6。所以选择如上图选项。

 

再有比较有用的就是这个邮件提醒功能如下图所示,这个功能为有邮件服务器的开发团队准备,当共同维护的程序代码有变动时会自动发送通知邮件。这么看起来Hudson还是比较厉害的。

下面是配置本机上的svn服务器,我们这里使用VisualSVN,由于VisualSVN采用界面化的配置,所以相对SVN 1.4.5要容易的多。安装后运行看到如下界面:

 

证明你的VisualSVN已经启动了,首先要有个身份,首先在User下建立一个用户,然后在左边的Repositories下建立一个自己的仓库,比如我们这里命名为Demo。

下面就是安装SVN客户端——TortoiseSVN。

 

然后我们构造一个java web的工程,工具可以任意,Eclipse,MyEclipse都可以。

我使用MyEclipse 构建一个工程名为test。其结构如下图:

 

最简单的web工程。建好就可以了。到test工程所在目录下,新建build.xml文件,如下图。

build.xml文件是为了使用ant进行构建的配置文件,写法参见我马上要写的一篇博文《ant中build.xml文件的简单配置》。

这里将我的build.xml文件内容附上:

<?xml version="1.0" encoding="UTF-8" ?>

<project name ="test" default ="war" basedir =".">

<property name ="classes" value ="${basedir}/build/classes"/>

<property name ="build" value ="${basedir}/build"/>

<property name ="lib" value ="${basedir}/WebRoot/WEB-INF/lib"/>



<target name ="clean">

<delete dir ="${build}"/>

</target>



<target name ="compile" depends ="clean">

<mkdir dir ="${classes}"/>

<javac srcdir ="${basedir}/src" destdir ="${classes}"/>

</target>



<target name ="war" depends ="compile">

<war destfile ="${build}/WebTest.war" webxml ="${basedir}/WebRoot/WEB-INF/web.xml">

<fileset dir ="${basedir}/WebRoot" includes ="**/*.jsp"/>

<lib dir ="${lib}"/>

<classes dir ="${classes}"/>

</war>

</target>

</project>



 

现在我们将我们的这个test工程上传到svn服务器上面去。

选择我们刚刚在svn服务器上建立的仓库。

 

点击ok按钮,等待上传成功后关闭上传窗口。现在我们就能够在Hudson中新建一个构建项目了。打开浏览器,输入http://localhost:8080/hudson打开Hudson的主页,选择构建一个自由风格的软件项目,并给项目命名,这里使用testDemo。

 

点击OK后,进入项目的配置界面,其中最重要的是Source Code Management,在其中选择Subversion后会有如下图的展开。

 

在其中的Repository URL中填入我们刚才项目上传得地址,我这里是下面这个:

https://arkiarx/svn/demo

在下面我们还要指定我们要使用ant。

 

点击add build step按钮选择Invoke Ant得到如下展开:

 

在其中选择我们hudson中配置的ant。

至此简单的项目的配置过程已经配置完成。

四、测试配置:

配置完成后,下面的步骤就很简单了,就是测试我们刚才这一套配置的过程是否正确。

选择我们刚刚新建的项目进行立即构建。如果我们构建成功的话可以得到如下的页面:

 

说明集成成功。在左侧的命令行输出中我们可以得到本次构建中ant得到的产物的清单,并进行下载。也可以到hudson的配置输出目录中查找。

posted on 2011-11-18 22:34  Geeeeeeek  阅读(5598)  评论(2编辑  收藏  举报

导航