持续集成 .Net手册

 

持续集成 .Net手册

一、概念

Martin Fowler的文章:Continuous Integration  中文翻译:持续集成

二、工具

传统工具:VisualStudio.Net,VisualSourceSafe,Rational ClearCase

自动编译工具:NAntNAntContrib

回归测试工具:NUnit

代码检查工具:FxCop

持续集成工具:CruiseControl.Net

三、步骤

  • CruiseControl.Net监控远程版本控制系统的变化

  • 变化发生时CruiseControl.Net调用编译工具进行编译(NAnt或VisualStudio.Net)

  • 编译成功后调用NUnit进行回归测试

  • 编译成功后调用FxCop进行代码检查

  • 完毕后将编译结果、测试结果、代码检查结果发送至开发人员、主管经理,并发布至网站

    图示:

   

    所有这一切都是按照编制好的脚本自动进行的

四、实施示例

目前我们使用的是ClearCase

主控软件为CruiseControl.Net,其脚本文件为ccnet.config

  • 配置远程版本控制系统

- < sourcecontrol type =" clearCase ">
  < viewPath > D:/cc_view/USE_TECH_DEPT/Platform/Nucleus/2产品开发/2实现/Nucleus1.0/Source </ viewPath >
  < useLabel > false </ useLabel >
  </ sourcecontrol >
  • 配置编译工具

- < build type =" nant ">
  < executable > F:/software/Agile.Net/nant-0.85-nightly/bin/nant.exe </ executable >
  < baseDirectory > F:/software/Agile.Net/nant-0.85-nightly/bin </ baseDirectory >
  < buildFile > Y:/nucleus.build </ buildFile >
  < logger > NAnt.Core.XmlLogger </ logger >
- < targetList >
  < target > build </ target >
  < target > fxcop </ target >
  </ targetList >
  </ build >
  • 配置测试用例

- < tasks >
- < nunit >
  < path > D:/Program Files/NUnit 2.2/bin/nunit-console.exe </ path >
- < assemblies >
  < assembly > Y:/NewPDObject/TestNewPDObject/bin/Debug/TestNewPDObject.exe </ assembly >
  </ assemblies >
  </ nunit >
  </ tasks >
  • 配置报告形式
< publishers >
- < xmllogger >
  < logDir > ../web/log </ logDir >
- < mergeFiles >
  < file > Y:/nucleus.xml </ file >
  </ mergeFiles >
  </ xmllogger >
- < email from =" ajaxchelsea@163.com " mailhost =" 163.com " includeDetails =" TRUE ">
  < projectUrl >http:// ajaxchelsea/ccnetweb </ projectUrl >
- < users >
  < user name =" BuildGuru " group =" buildmaster " address =" ajaxchelsea@163.com " />
  < user name =" chelsea " group =" developers " address =" chelsea@chelseafc.com " />
  < user name =" ajax " group =" developers " address =" ajax@ajaxfc.com " />
  </ users >
- < groups >
  < group name =" developers " notification =" always " />
  < group name =" buildmaster " notification =" always " />
  </ groups >
  </ email >
  </ publishers >
  • 其中CruiseControl.Net没有提供代码检查工具FxCop的支持,其文档建议使用NAnt的<exec>任务来调用FxCop,直到出现<fxcop>的Task,因此,需要配置NAnt的脚本文件:
- < target name =" fxcop " depends =" build ">
  < exec program =" D:/Program Files/Microsoft FxCop 1.30/fxcopcmd.exe " commandline =" /p:Y:/nucleus.fxcop /o:Y:/nucleus.xml " failonerror =" false " />
  </ target >

五、几点提示

  • CruiseControl.Net会自动根据本地ClearCase的View监控远程VOB
  • 其实除了监控远程版本控制系统外其它的任务都可以由NAnt来完成,CCNet只负责监控变化并调用NAnt即可
  • 可以直接为CCNet配置VisualStudio.Net解决方案"<build type="devenv" solutionfile="D:/dev/MyProject/MyProject.sln" configuration="debug" /> ",但这样就无法配置FxCop了,至少目前如此;
  • ccnetservice.exe.config中有一句“<add key="ccnet.config" value="C:/Downloads/TestData/ccnet.config" /> ”应该是配置ccnet.config的路径,但现在好像不管用,还得将ccnet.config放在server目录下 
  • 最好避免中文路径,否则就需要手工为几个Xml格式的文件,如.csproj等加入编码方式“<?xml version="1.0" encoding="UTF-8" ?>,或者将中文路径映射为虚拟硬盘:“subst Y: "D:/cc_view/USE_TECH_DEPT/Platform/Nucleus/2产品开发/2实现/Nucleus1.0/Source"”
  • NUnit有VisualStudio.Net插件NUnitAddin,FxCop等亦可以配置为VisualStudio外部工具,推荐使用
  • 各种工具的安装、使用,在各自的文档里都非常详细,网上亦有无数资源

六、参考资料

已标记关键词 清除标记
相关推荐
.NET Framework 4.0 常用类库参考手册 [微软官方 MSDN] MSDN Library - .NET Framework 4.0 - 命名空间 (节选版) 制作成了chm格式,方便离线状态下学习! ======================================= 原文地址:http://msdn.microsoft.com/zh-cn/library/ms229335.aspx ======================================= .NET Framework 类库 - 命名空间 (节选版) Microsoft.Win32 提供两种类型的类:处理由操作系统引发的事件的类和对系统注册表进行操作的类。 System 包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、特性和处理异常的基础类和基类。其他类提供支持下列操作的服务:数据类型转换,方法参数操作,数学计算,远程和本地程序调用,应用程序环境管理以及对托管和非托管应用程序的监管。 System.Collections 包含定义各种对象集合(如列表、队列、位数组、哈希表和字典)的接口和类。 System.Data 包含组成大部分 ADO.NET 结构的类。ADO.NET 结构使您可以生成可用于有效管理来自多个数据源的数据的组件。 System.Data.Common 包含由 .NET Framework 数据提供程序共享的类。.NET Framework 数据提供程序描述用于在托管空间中访问数据源(如数据库)的类的集合。 System.Data.Linq 包含支持在 LINQ to SQL 应用程序中与关系数据库进行交互的类。 System.Data.Linq.Mapping 包含用于生成表示关系数据库的结构和内容的 LINQ to SQL 对象模型的类。 System.Data.Mapping 提供用于存储数据映射信息的类型。 System.Data.Metadata.Edm 包含一组类型,这些类型表示模型中由实体框架使用的概念,以及一组帮助应用程序使用元数据的类。 System.Data.Objects 包含可访问对象服务的核心功能的类。 System.Data.Objects.DataClasses 包含以下这些类:Entity Data Model (EDM) 中定义的类型的基类、由导航属性返回的类型的基类,以及用于定义将公共语言运行时 (CLR) 对象映射到概念模型中类型的特性的类。 System.Data.Sql 包含支持特定于 SQL Server 的功能的类。此类的 API 扩展已添加到 SQL Server 的 .NET Framework 数据提供程序 ( System.Data.SqlClient) 中。 System.Data.SqlClient 包含封装 SQL Server .NET Framework 数据提供程序的类。SQL Server .NET Framework 数据提供程序描述了用于在托管空间中访问 SQL Server 数据库的类集合。 System.IO 包含允许对数据流和文件进行同步和异步读写的类型。 System.Linq 包含支持使用语言集成查询 (LINQ) 的查询的类和接口。 System.Web 提供启用浏览器/服务器通信的类和接口。 ……
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页