自动进行团队构建和单元测试过程
作者:网络转载 发布时间:[ 2013/5/29 10:22:15 ] 推荐标签:
还需要在服务器上创建一个新的用户帐户,由它拥有运行 CruiseControl 时涉及的文件和进程:
[root@fcvm ~]# useradd cruise
[root@fcvm ~]# su - cruise
[cruise@fcvm ~]$ pwd
/home/cruise
[cruise@fcvm ~]$
后,因为将要构建的某些项目要使用 Maven 构建工具,所以需要下载、安装它,并设置适当的环境变量(请参阅 参考资料)。(JAVA_HOME 应当设置为 /usr/lib/jvm/java。)我的习惯是把 Maven 和 CruiseControl 这样的外部包放在叫作 pkg 的目录中。在 Maven 的 Web 站点上有完整的安装说明,所以我在这里不详细介绍这个步骤了:
[cruise@fcvm ~]$ mkdir pkg
[cruise@fcvm ~]$ cd pkg
[cruise@fcvm pkg]$ [install Maven]
安装 CruiseControl
下一个工作是下载 CruiseControl(请参阅 参考资料)并把它安装在 pkg 目录中:
[cruise@fcvm pkg]$ wget -q http://heanet.dl.sourceforge.net/
sourceforge/cruisecontrol/cruisecontrol-2.2.1.zip
[cruise@fcvm pkg]$ unzip cruisecontrol-2.2.1.zip
Archive: cruisecontrol-2.2.1.zip
creating: cruisecontrol-2.2.1/
creating: cruisecontrol-2.2.1/contrib/
[...]
inflating: cruisecontrol-2.2.1/reporting/jsp/webcontent/xsl/testdeta
ils.xsl
inflating: cruisecontrol-2.2.1/reporting/jsp/webcontent/xsl/unittest
s.xsl
[cruise@fcvm pkg]$ rm cruisecontrol-2.2.1.zip
[cruise@fcvm pkg]$
不需要构建 CruiseControl,因为发行包中包含一个预先构建好的 JAR 文件。
现在可以让第一个自动构建工作了。这里将采用 XStream 项目的源树作为初始示例(请参阅 参考资料)。稍后 您将会学习到如何添加来自本地和远程源代码仓库的更多项目。CruiseControl 从自己的启动目录中叫作 config.xml 的文件中读取要构建的项目的信息。在本文的安装中,这个目录是 /home/cruise。清单 1 显示了一个简单的 config.xml 文件的内容,可以从它开始。要创建它,只要把清单 1 中的文本拷贝到一个新文件可以了:
清单 1. 构建 XStream 的简单的 CruiseControl config.xml 文件
<?xml version="1.0"?>
<cruisecontrol>
<project name="xstream" buildafterfailed="false">
<listeners>
<currentbuildstatuslistener
file="log/build/xstream/status.txt"/>
</listeners>
<modificationset>
<filesystem folder="/home/cruise/force-build/xstream"/>
<svn LocalWorkingCopy="src/xstream"/>
</modificationset>
<schedule interval="3600">
<ant antscript="/usr/bin/ant"
uselogger="true"
antworkingdir="src/xstream"
multiple="1"
target="library"/>
<ant antscript="/usr/bin/ant"
uselogger="true"
antworkingdir="src/xstream"
multiple="5"
target="clean library"/>
</schedule>
<log dir="log/build/xstream"/>
<dateformat format="dd/MM/yyyy HH:mm:ss"/>
</project>
</cruisecontrol>
配置文件向 CruiseControl 提供了关于要构建的每个项目的三部分主要信息:
如何构建项目,在 <schedule> 元素中指定:
每 3,600 秒(即每小时)构建项目一次。
用 Ant 进行构建过程。
每进行到第 5 次构建时,清理构建制品(类文件以及前面构建中的类似内容)的源树。
如何检测什么时候 应当 构建项目,在 <modificationset> 元素中指定:
用 Subversion(svn)检查源树的本地工作拷贝是否过期。(如果源代码没有变化,不需要构建。)
检测强制构建目录中叫作 xstream 的文件的时间戳。这样即使源树没有变化,也可以手动强制进行下一次安排的构建。(在这篇文章后面,我将多次谈到可能需要这种手工覆盖。)
对构建的结果要做什么,在 <listeners> 和 <log> 元素中指定:
把构建过程的输出放在 log/build/xstream 目录中加了时间戳的文件中。
把构建的整体状态写入这个目录中的一个文件。

sales@spasvo.com