团队开发需要进行集中的项目文件管理与有效的协调,我们采用源代码管理工具协助我们管理,卓有成效。限定重要文件的访问权限、使用悲观锁杜绝成员同时编辑同一份文件、不允许长时间迁出文件等规则让我们在某一时间段内非常愉快。但是慢慢的,有人抱怨“我获取了源代码怎么编译错误?”。于是增加规定:迁入之前必须获取最新,然后再一次编译,成功后方可迁入VSS。这种办法是很不错,但是工作繁琐了,尤其对大型项目,更加的苦不堪言。看来我们需要一个机器人帮我们,那就是持续集成。持续集成是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把代码仓库中所有代码获取下来,执行编译、并自动运行所有的测试用例,如出现错误则通知人员这是一个失败的提交。一个适合的集成频率非常重要,根据团队的实际情况采用灵活的集成频率,过于频繁的频率会加大持续集成的实施难度,甚至最后实施失败。接下来简单介绍一下在.NET上常用的持续集成软件CruiseControl.NET和它的使用方法。
在实验部署中,CruiseControl.NET集成了如下功能:
目前CruiseControl.NET官方网站提供的最新版本为1.4.2,提供三种方式下载——源代码、zip压缩包、windows安装文件。选择windows安装文件最为方便,下载相应的exe文件,点击选择安装目录安装即可。安装完成后,我们可以选择点击ccnet.exe来启动软件也可以选择从系统服务启动。
程序配置文件ccnet.config是CruiseControl.NET Server最核心的文件,借助CCNetConfig图形化工具我们可以很方便的进行配置的修改,下面我就分别介绍每一项如何进行配置:
配置文件为xml格式,最外层的标签为cruisecontrol,包含一个完整的配置,如下所示:
queue标签允许进行集成请求序列配置,规定重复的集成请求如何被处理,一共有三种处理方式:
源代码管理为项目配置中的一个子结点,下面以VSS为例做一下详细的介绍,示例及解释如下:
源代码配置完成后,CCNet Server就能够把源代码获取到本地了,下面我们就可以配置构建节点,让CCNet为我们进行自动构建。CCNet支持NAnt、MSBuild两种构建方式,通过这两种方式我们可以方便的进行项目集成编译。NAnt是功能非常强大的开源.NET编译工具,但是需要编写build文件,该文件负责指导Nant进行编译,NAnt也可以直接编译sln文件,但是对2005支持不好。MSBuild是微软随VS2005一起发布的一个集成编译工具,和NAnt类似,可以直接编译sln文件,功能上完全可以替代NAnt,下面就以MSBuild为例介绍一下如何进行配置:
通过设定msbuild的参数还可以执行很多复杂的任务,例如发布网站到指定目录。
如果某个类库或应用程序包含单元测试,我们可以配置是的ccnet在集成过程中运行单元测试,基本配置范例与说明如下:
邮件提醒任务需要部署在publishers节点下面,若部署在tasks节点下面,发生构建失败将不会执行后续任务,因此无法收到失败的提醒邮件。配置的示例代码及解释如下:
为节省大家时间,这里提供了一个基本的配置文件,包含单元测试、编译、网站发布、邮件通知。