定时建构可以迅速找到集成问题和失效测试问题,因为它是以规律的时间间隔运行的。各部分的程序员,只在本区域进行集成测试,而不会测试整个系统的集成测试情况。所以为了避免错误的累积,我们必须采用定时建构的方法,
一般而言,定是建构的步骤为:1.签出版本控制系统当前代码2.调用建构文件和测试代码3.建构结果写入日志文件。为了完成上述过程,在UNIx系统上,我们采用cron命令,在win系统下我们采用at命令。
Cron的使用方法为打开cron编辑器:crontab –e 输入执行参数 0 2 * * *build.sh。at的使用方法为at 02:00 /every c:\work\build.bat。这两者都表示在凌晨两点执行建构脚本。常用的建构工具有CruiseControl,下面我们学习如何使用CruiseControl。
现在开始搭建定时建构环境。在建构机器上建立目录builds,期间建立文件cc-build.xml、config.xml、checkout\userview、logs目录,其中cc-build.xml文件为下载最新代码的ant文件。定是构建运行时的流程为:1.删除上一次构建2.从svn签出最新命令3.运行构建。文件内容为:
<project name="cc-build" default="build"basedir="checkout">
<targetname="build">
<deletedir="userview" />
<execexecutable="svn">
<argline=" checkout svn://127.0.0.1/userview/trunk userview"/>
</exec>
<antantfile="build.xml" dir="userview"target="test"/>
</target>
</project>
执行上述文件为:ant -buildfile cc-build.xml。可见它首先删除了下载的userview代码,重新从svn服务器上下载最新版本代码,最后执行svn库里最新的build.xml文件的test target。
首先我们安装CC(cruiseControl),下载后执行安装完成,在更目录底下有文件cruisecontrol.bat,这个文件点击即可以开始CC自动构建。下面配置建构过程,CC的默认程序为config.xml文件,其结构为:
<cruisecontrol>
<projectname="userview">
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/listener.txt"/>
</listeners>
<modificationsetquietperiod="30">
<svnlocalworkingcopy="D:\www.dongsuqin.cn\builds\checkout\userview"/>
</modificationset>
<scheduleinterval="60">
<antanthome="apache-ant-1.7.0"buildfile="D:\www.dongsuqin.cn\builds\cc-build.xml"target="build"/>
</schedule>
<logdir="logs/userview">
<mergedir="projects/${project.name}/target/test-results"/>
</log>
<publishers><!--<currentbuildstatuspublisherfile="logs/userview/cbsp.txt" />-->
<htmlemailmailhost="126.smtp.com" logdir="logs/userview"returnaddress="gongqingkui@163.com"buildresutlurl="http://192.168.195.54:8080/cruisecontrol/buildresults/userview">
<mapalias="gong" address="gongqingkui@126.com" />
<failureaddress="gong" reportWhenFixed="true" />
</htmlemail>
</publishers>
</project>
</cruisecontrol>
上述代码,首先设定项目启动记录到listener.txt文件中,在设定监控检出目录,在设定每60秒执行一次自动构建,记录结果到test-result,发送失败结果到gongqingkui@163.com邮箱中。
上述代码完成后,在本地修改文件,提交到SVN服务器上,一分钟左右,自动构建过程开始执行,结果可以在本地通过访问http://192.168.195.54:8080/dashboard/tab/build/detail/userview和http://192.168.195.54:8080/cruisecontrol/buildresults/userview来查看。
参考
4. Ant的主要任务的语法
5. Ant脚本的详细配置
6. Subversion综述