DailyBuild全攻略
http://www.snailsoft.com/download/db1.2.rar
不负重望,终于完工了.如果遇到什么问题,大家一起来测试哦.我就躲在一边休息了想想这些日子,梦里都是写程序,没有点累是假的. 言归正传吧.
随着软件开发规模的扩大,软件内在bug的增多,以致于项目经理和开发者被许多无名bug和各种故障弄得焦头烂额,甚至为了一个小问题,而到会议室开会。于是软件的发布日期被无限地延期。可是这一切如果有了DailyBuild,项目经理只要在上班前沏上一壶茶,然后在命令提示符下敲入一个命令,这一切便尽在掌握之中。不信,请跟我来。
DailyBuild中文译作“每日构建”是利用一序列软件,对进行中的项目进行监控,如果发现服务器上共享的项目文件有所改动,便会再次编译,得到软件的最新版本,并且生成测试和代码规范文档。本文将带你步入.NET下每日构建的佳境。
一. 系統需求
Win2000 以上操作系统 VS.NET 2003 必须被安裝
二. 相关工具安裝說明
为了能够实现功能,以下的软件是必须下载安装的(为了程序运行,请载最新版本),后边有相关的下载地址.
1. Nant
http://nant.sourceforge.net/builds/
2. NAntContrib
http://nantcontrib.sourceforge.net/nightly/builds/
3. NUnit
4. Visual Source Safe
http://www.microsoft.com/vstudio
5. FxCop
http://www.gotdotnet.com/team/fxcop/
6. CruiseControl.NET
7. NUnit2report(将NUnit生成的XML文件“样式”成HTML文件)
http://sourceforge.net/projects/nunit2report/
三. 制作说明
首先安装上边所列出来的所有软件.
程序运行总框架如下图:
图1 整个程序框架图
说明:
cc.net 监控VSS里的变化,如果发现有变化,则cc.net立即调出NAnt将最新改动的VSS里的数据拷贝到本地并且进行编译,将结果输出.生成DLL程序集或者EXE可执行文件.NAnt将得到的将要执行单元测试的程序集DLL文件交给NUnit检测并且生成XML文件(为了方便我在这里又将XML文件”样式”成HTML文件,打开即以图形方式查看.NAnt并且将得到的程序集交给FxCop检查,并生成XML文件,看编码是否规范. 这一切都是自动的,只要将CC.NET打开,这一切就是自动化的,需要的只是你的眼睛来看结果而已.
1.用VS建立两个工程
用VS编译成两个程序集,TestUNit.dll项目所需要的程序集,Test.dll单元测试用例.
用VS在D:\ClientVSS下新建 (类库)工程Project 代码如下:
图2 程序集图
编译生成TestNUnit.dll文件.
再打开VS生成类库和TestProject工程,引用上边生成的TestNUnit.dll文件和NUnit的:
图3 添加引用NUnit图
代码如下:
图4 测试样例图
编译生成 test.dll程序集(作为单元测试用)
2.建立VSS服务器
打开VSS的服务端,添加帐号 coolbug,密码:******,然后创建数据库,这里数据库用的是安装的自带的srcsafe.ini文件.然后打开客户端,将刚建立的两个工程加到拖到服务器上.
图5 建立VSS服务器图
并将所有项check in到服务器上.
3.建立与所有相关的default.build文件
在D:\test 下建立 default.build 文件,代码如下(将nunit2report bin下的文件都拷贝到nant的BIN目录里)
图6 Default.build文件内容图
为了要将文件全放到记事本里,排版有点不好看.
因为fxcopcmd的参数在exec task里不能指定,所以必须再写一个fxcop.bat文件(此是本人的独创感觉很很不错,如果大家有什么更好的方法可以MAIL给我),内容如下:
图7 fxcop.bat 文件内容图
为了fxcopcmd能够运行,只有将fxcopcmd.exe加到系统的环境变量中去,我发现这个不像nant那么好加,每次加完后,重启系统后还要重新加到环境变量中去,谁有更好的方法?
测试这个build文件,得到下图所示结果:
图8 编译default.build文件结果图
这时候在d:\test文件夹里将会得到结果.
4. CC.Net主控制
先进入CC.Net的安装目录,进入Server文件夹,新建一个ccnet.config文件(如果里边有则修改之),修改如下(我以C#里的注释方式”//”进行注释,大家调试的时候,删掉前边的”//”一行的内容即可):
图9 CC.Net.config文件内容图
现在打开 D:\test 文件夹,发现只有build文件和引用的bat文件,其他要得到的信息都没有.如下:
图10 还没得到文件时的d:\test图
这时,打开CC.Net目录里 ..\server 下的 StartCCNet.bat 文件,双击,(意最好只双击一次,然后不要关掉,否则第二次打开的时候,会一闪而过,所有的结果与错误都在ccnet.log文件里,如果你想用WEB的方式查看,可以再配置一下ccnet.config文件)如图所示:
图11 运行StartCCNet.bat时的图
这个时候,d:\test 文件夹里还是那两个文件,为什么.因为VSS服务器里还没有改动情况,现在我们打开VSS客户端,并随便check in一个文件,在D:\Test文件夹下得到如下文件:
图12 得到文件时的d:\test图
打开这些文件看看:
Local文件夹里的结构和VSS客户端上的顺序一样,当然得要看你Build文件里是取哪个目录.result文件夹里只有dll和exe文件. 先打开test.dll-results.xml文件看看.
图13 NUnit生成的XML文档
最后生成的网页文件如下:
图14 将NUnit生成的XML文档转换成HTML文件
呵呵,真酷,都通过测试了.100%通过哦.
再看看FxCop生成的XML文件:
图15 FxCop生成的XML文件
四 所遇到的问题及版
由于时间仓促,请大家一起来测试,如果有Bug请在Blog上提出来或者发到我的邮箱coolbug@126.com.