代码改变世界

每日构建系列(1):入门篇

2009-12-28 13:03  听风吹雨  阅读(7498)  评论(8编辑  收藏  举报

关键词:Daily Build、CI、CCNet、CCTray、VSS、SVN、MSBuild、NAnt、NUnit、Email、FxCop、NCover、NCoverExplorer、RSS、SCM、UCM;产品、版本管理、基线、复合基线;每日构建、持续集成、编译、代码构建、单元测试、代码规范、代码覆盖率;软件测试、性能测试、功能测试、冒烟测试、回归测试、测试阶段、测试活动


 

1        简介

1.1. 每日构建的优点

  每日构建(Daily Build)也可称为持续集成(Continuous Integration),强调完全自动化的、可重复的创建过程,其中包括每天运行多次的自动化测试。每日构建的作用日益显得重要。它让开发者可以每天进行系统集成,从而减少了开发过程中的集成问题。

 

  持续集成可以减少集成阶段"捉虫"消耗的时间,从而最终提高生产力。它使得绝大多数bug在引入的同一天就可以被发现。而且,由于一天之中发生变动的部分并不多,所以可以很快找到出错的位置。

 

  对开发人员而言,每日构建带来的好处就是签入即更新。

1.2. 每日构建系统的搭建说明

  每日构建:DailyBuild;持续集成:continuous integrationCI);

  概述:是在Windows 2003中做每日构建的,使用CruiseControl.Net自动从VSS服务器中检测并下载最新的源代码;其中使用NAnt来覆盖sln文件,这一步不是必须的,只不过是由于项目的特殊情况导致的;然后用MsBuild对解决方案自动编译;使用NUnit来进行单元测试;使用NAnt调用NCoverNCoverExplorer来统计代码覆盖率;利用FxCop来检测代码规范;利用CCTray可以对每日构建的情况进行监控,了解CruiseControl.Net的工作情况;并把构建的情况发邮件到指定的邮箱。

1.3. 每日构建所使用的工具

CCNet 1.4(每日构建工具&持续集成工具)

  说到持续集成首先要讲到CCNetCruiseControl.NET),它是一个DailyBuild工具,是通过配置ccnet.config来集成其它工具的;

CCTray 1.4(监控每日构建)

CCNetwebdashboard目录,通过WEB的方式对当前的ccnet的工作情况进行反馈。但是通过CCTray可以更加方便的监视和管理构建过程。

这个是比较实用的,比如在局域网里面,我可以监控构建机器的构建情况;

Email(邮件通知)

  webdashboardCCTray都只能支持本地或者局域网,所以如果要真正远程监控(外网),那就要使用到邮件通知了;

CCNet本身就支持Email的发送,所以可以使用<email></email>标签对,注意,一定要配置好发送邮件的主机和端口号;

VSS 6.0(源代码版本管理工具)

  其实也可以使用其它的版本管理软件,比如SVN等;

  值得注意的是:源代码路径和安装VSS的路径;

MSBuild 2.0(代码构建工具)

  MSBuild是在安装Framework2.0是已经包含的;

  安装路径一般是:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe

NUnit 2.4.8(单元测试工具)

  这是一个比较通用的单元测试工具,很多的Net开发人员都是使用这个来作为单元测试,但是有多少人是会真正写单元测试的呢?题外话了。

  其实ThoughtWorks也推出了一个集成测试工具:Selinumu,也是可以集成到CCNet的(废话),但是还没有使用,因为对集成测试还不是很了解;

FxCop 1.36(代码规范检测工具)

  这是用来检测代码规范的,其中包括设计规范、命名规范、安全规范、互操作性等:http://hi.baidu.com/sharppoint/blog/item/1a9a7922c33d21f6d6cae266.html

比较关心的是如何定义自己的规范;

NAnt-0.86-beta1(代码构建工具)

  也是一个类似于MsBuild的,也尝试过用来编译代码,但是不成功;

  不过里面也集成很多东西,也提供比较多的方法,比如文件的拷贝,执行bat文件等等,有比较多的内容值得挖掘;

NCover 2.1.2(代码覆盖率测试工具)

  直接在ccnet.config里面就有一个<exec>标签来执行外部程序的,所以这里就直接使用了;

  无法通过参数的设置来修改生成的文件Coverage.Xml的名称;

  貌似NAnt是有对这个的支持的;

NCoverExplorer2.1.2(代码覆盖率的图像)

  这个报告是建立在Coverage.Xml的基础上的,所以前面一定要生成好一份Coverage.Xml文件;

RSS(订阅)

  这个貌似有点不实用,只要加个标签就可以生成一个XML了;