1. 系统需求
Win2000 以上操作系统,VS.NET 2003 必须被安裝
2. 相关工具说明
Nunit
单元测试的一个比较优秀的工具。
http://www.nunit.org/
Visual Source Safe
版本控制工具。
http://www.microsoft.com/vstudio
CruiseControl.NET
项目监控工具。
http://ccnet.thoughtworks.com
Final Builder
一个集版本控制,编译,单元测试,流程控制等一体非常强大的构建工具。
3. 总框图
说明:
CC.Net 监控VSS里的变化,如果发现有变化,CC.Net立即调出Final Builder将最新改动的VSS里的数据拷贝到本地并且进行编译,将结果输出.生成DLL程序集或者EXE可执行文件, Final Builder将得到的将要执行单元测试的程序集DLL文件交给NUnit检测(NUnit已集成到Final Builder的内,NUnit测试后的返回信息也会被Final Builder所得到。),不管成功失败可以多种形式通知开发人员,以上所有操作只要是包含在框图(Final Builder)内部的,执行后的所有信息都会被Final Builder所得到,并以写Log的形式记录下来。
4. 安装部署Daily Build
首先安装上面所列出来的所有软件。
4.1. 建立VSS服务器
打开Visual Studio 2003, 新建一个类库项目,名称为ClassLibrary1, 使之生成Bank.dll程序集。
代码如下:
using System;
namespace ClassLibrary1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Class1
{
public static string Message()
{
return "您好啊!";
}
}
}
4.2. 建立VSS服务器
直接在解决方案管理器中选择该解决方案右击鼠标,选择 将解决方案添加到代码管理器 既可。
4.3. 配置Final Builder
4.3.1 建立新的FB项目
首先我们建立一个新的工程,存储位置为F:\FBProject,项目名为MyTest。
4.3.2 添加一个时间戳
在左边工具栏中开打Misc选择Get Date/Time 做以下设置:
说明:红色所框起的部分需要手动设置
1.选择当前时间。
2.日期格式为:yyyymmddhhmmss
3.选择存放这个时间的变量 我们在这里添加一个变量叫做StartTime
4.3.3 下载VSS服务器的最新版本
请先设置好VSS的一些参数。选择菜单 tools->Options 出现对话框 Final Builder Options 选择左边工具栏 Version Control Systems->Visual source safe
说明:红色所框起的部分需要手动设置
1. Source Safe Ini File:需要在VSS Data Base所在的目录中的srcsafe.ini文件的路径。
2. Project:VSS服务器上的项目路径。
3. Working Folder:本地工作目录。
4. User ID:登录VSS的账号。
5. Password:登录VSS的密码。
然后需要做的就是添加一个下载最新版本的任务了。
在左边工具栏中开打Source Safe选择VSS Get Last Version 做以下设置:
说明:红色框中是您已经在上一部中设置的一些参数,您在这里只需要确认下就可以了,但一定要记住要选择Recursive和Build Tree(递归下载这个目录下的所有文件)。
4.3.4 编译本地文件
请先设置好.net的一些参数。选择菜单 tools->Options 出现对话框 Final Builder Options 选择左边工具栏 Compilers-> Visual Studio .NET
说明:这里只有VS2002和VS2003的选择,在更高的版本中还添加了VS2005以及VSTS一系列微软的工具。
然后需要做的就是添加一个编译最新版本的任务了。
在左边工具栏中开打Compilers选择Visual Studio .NET 做以下设置:
说明:在这里你最主要的需要指定你刚才在VSS服务器上下载到本地工作目录里的工程的解决方案。当然如果你只需要编译这个解决方案中的部分项目,你也可以在蓝色框中自定义你的选择。
4.3.5 单元测试
请先设置好NUnit的一写属性参数选择菜单 tools->Options 出现对话框 Final Builder Options 选择左边工具栏 Other-> NUnit,选择好nunit-console.exe的路径既可。
然后需要做的就是添加一个测试刚才编译好的程序集的任务了。
在左边工具栏中开打Testing Tools选择NUnit 选择需要测试的程序集,或者原先做好的测试项目就可以了。
4.3.6 添加一个时间戳
方法同4.3.2 只是把存放这个时间的变量名改为EndTime。
4.3.7 写Log
在Final builder中写LOG相当简单,当然LOG里对于您这次编译所得到的信息记录也相当完整。
在左边工具栏中开打Misc选择Export Log File,选择要导出的位置就可以了。
说明: Output File中的文件路径用%%这个所包含的刚才我们在写时间戳时候存放时间的变量,那么这里的文件全路径就是 F:\LOG\FinalBuilderLog 开始执行任务时间-任务结束时间.html
4.3.8 发送Email
在左边工具栏中开打Internet选择Send Email(SMTP) 做以下设置:
说明: Host为发送服务器的地址
下面是用来发送邮件的帐号和密码
说明: From表示以谁的名义,邮箱来发送。
说明: Subject 邮件标题
Body 内容
说明: 这里特别注意附件的路径,我们在这里也是采用同4.3.7中导出LOG相同的路径。
说明:添加邮件列表,如果需要发送请记得把最后一项的Enabled设为Yes,然后点OK就可以了。
4.4. 配置CC.Net
在这里我们使用的CC.Net的最新版本1.0.1.1277,直接安装,并且在桌面和开始菜单中都有快捷方式。
首先,我们需要做的是配置CC.Net的XML文件。
打开 开始->所有程序->CruiseControl.NET->CruiseControl.NET Config
配置方法如下:(使用时请删除里面/**/所包含的文字,CC.Net不能识别中文)
<cruisecontrol>
<project name="ttcre2">
<webURL>http://172.20.16.178:98/</webURL>
<schedule type="schedule" sleepSeconds="60"/>
/*
设置VSS服务器的一些参数,在这里我们把VSS服务器放在了IP地址为172.20.16.178的服务器上
ssdir 为VSS的数据库存放的文件夹
executable 为VSS的执行程序
project 表示VSS中的项目节点
workingDirectory 本地工作文件夹
autoGetSource 当VSS发生改变时,是否自动下载最新的版本(因我们在Final builder里面实现了下载最新版本,所以这里我们选择false)
*/
<sourcecontrol type="vss">
<ssdir>\\172.20.16.178\vss8.0</ssdir>
<executable>D:\Program Files\Microsoft Visual SourceSafe\ss.exe</executable>
<project>$/ClassLibrary1.root/ClassLibrary1</project>
<workingDirectory>F:\Visual Studio Projects</workingDirectory>
<autoGetSource>false</autoGetSource>
</sourcecontrol>
/*
当VSS中版本发生变化的时候需要做的工作
*/
<tasks>
<exec>
<executable>..\WorkingDirectory\MyTest.bat</executable>
</exec>
</tasks>
/* 写Log */
<publishers>
<xmllogger>
<logDir>..\OAFlow_log\</logDir>
</xmllogger>
</publishers>
/* 当获得VSS服务器已经有改动时候延迟执行tasks中的任务(到时间后会再到VSS上取得一下最新版本,如有改动再次等待,一直到设置的时间内无改动为止,执行tasks中的任务。) */
<modificationDelaySeconds>100</modificationDelaySeconds>
</project>
</cruisecontrol>
大家一定看到了我的tasks中执行的MyTest.bat了,其实他就是执行一个命令行指令,当然,如果你Final Builder有多个项目,也可以执行多个指令。
内容如下:
"D:\Program Files\FinalBuilder2\FinalBuilder2.exe" /n /r /e "F:\FBProject\MyTest.fbz2"
说明:第一个引号中是Final Builder的执行程序
第二个引号是我们在4.3.1中创建的Final Builder工程。
5. 小结
本文从Daily Build的好处讲到相关软件的配置及最后生成结果的文件。整体看来,Daily Build的确是项目便捷,快速,稳定开发的利器。工欲善其事,必先利其器,希望本文能对那些为项目的bug调试搞得焦头烂额的项目经理们起到抛砖引玉的作用。