持续集成 .Net手册--提升开发效率和质量

参考:http://blog.csdn.net/chelsea/article/details/132525

持续集成 .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="[email protected]" mailhost="163.com" includeDetails="TRUE">

  <projectUrl>http://ajaxchelsea/ccnetweb</projectUrl>

- <users>

  <user name="BuildGuru" group="buildmaster" address="[email protected]" />

  <user name="chelsea" group="developers" address="[email protected]" />

  <user name="ajax" group="developers" address="[email protected]" />

  </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外部工具,推荐使用
  • 各种工具的安装、使用,在各自的文档里都非常详细,网上亦有无数资源

六、参考资料

时间: 2024-10-11 10:49:53

持续集成 .Net手册--提升开发效率和质量的相关文章

Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结

Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide  code templete 1 5. 方法链( 流接口.??管道抽象??) 1 6. static factory method)和import 1 7. varargs 1 8. 元编程(anno??) 1 9. 易读API 1 10. 方法链 1 11. 功能序列 1 12. 嵌套函数 2

atitit.提升开发效率---mda 软件开发方式的革命--(2)

atitit.提升开发效率---mda 软件开发方式的革命--(2) 1. 一个完整的MDA规范包括: 1 2. 一个完整的MDA应用程序包括: 1 3. MDA可以带来的最大的三个优点是什么? 2 4. 三大MDA工具 2 5. 代码补充 3 6. Mda的问题 3 7. EMF与MDA 4 8. MDA跟代码自己主动生成的差别 4 9. openMDX-开源MDA平台 5 10. openMDX 的开发过程 5 11. MDA的两种实现 5 12. 參考 6 1.  一个完整的MDA规范包括

atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模

atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模 1. 建模语言的选型anno+html...不是uml 1 2. 指定显示模板 @BeanEditForm(tmplt="c:/edit.html") 1 3. 配置属性的@Property(lable="xxx")显示 2 4. 配置属性的显示控件方式@DataType(value=DataTypeConstants.select,datasource="c:/cate

Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型 &#160;橄榄型 直板型

Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型  橄榄型 直板型 项目主体三个部分 ui界面,中间层,数据库 按照不同的比重可以分为一下三个模型  哑铃型  橄榄型 直板型 哑铃型 开发效率更高,性能反之 ,ui和数据库层比较大,中间的接口层比较薄弱 直板型 橄榄型,追求性能型..中间打,俩偷笑 从语言看ui 界面h5是dsl 4gl+js  3.5gl....数据库是sql ,dsl  4gl 语言代际比较高.带来更高的开发效率性... 作者:: 绰号:老哇的爪子claw of

atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较

atitit.提升开发效率---使用服务器控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比较 如下列举了服务器控件生命周期所要经历的11个阶段. (1)初始化-- --在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置:二.跟踪视图状态.首先,页面框架通过默认方式引发Init事件, 并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑.此后,页面框架将调用TrackViewState方法来跟踪视图状态. 需要注意的是:多

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为[email protected](displayType = displayType.rang, rangStart = rang.start, rangEnd = rang.end,op=op.range) 1 3. 自定义@Adapter (UI2whereExpress) 2 4. 条件字段排序@ConditionFieldCf

【Unity】4.2 提升开发效率的捷径--导入Unity自带的资源包

分类:Unity.C#.VS2015 创建日期:2016-04-06 一.简介 Unity自带的资源包也称为标准资源包.换言之,Unity自带的所有标准资源包导入到Unity项目中以后,都会放在Project视图的Standed Assets文件夹下.如果是多平台,除了Standed Assets文件夹以外,还会有一个Edit文件夹. 如果你打开别人写的Unity项目,只要看到项目中包含有Standed Assets文件夹和Edit文件夹,你就应该马上想到,这些文件夹下的资源都是从Unity自带

atitit.提升开发效率---mda 软件开发方式的革命

atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MDA的历史及其由来 2 5. MDA的三个主要目标是:轻便性. 互操作性和可重用性. 3 6. MDA跟代码生成的不同 3 7. 问题:也许MDA不过是已有的Case Tools的"昙花一现" 3 8. 实际的效率提升 3 9. Mda在嵌入式系统的成功 4 10. 我的总结:::基于伪码生

atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表

atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建模在后自动建表 1 2. 自动建表的原理: 1 3. 自动建表工具::hibernate.hbm2ddl 跟Hibernate4.1 2 4. hbm2ddl最佳实践 2 3. hibernate.hbm2ddl.auto 2 5. Java语句执行 3 6. 使用Ant 执行hbm2ddl 3 7