持续集成 .Net手册--提升开发效率和质量
参考:http://blog.csdn.net/chelsea/article/details/132525
持续集成 .Net手册
一、概念
Martin Fowler的文章:Continuous Integration 中文翻译:持续集成
二、工具
传统工具:VisualStudio.Net,VisualSourceSafe,Rational ClearCase
自动编译工具:NAnt,NAntContrib
回归测试工具: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>
配置测试用例
- 配置报告形式
<publishers>- <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手册--提升开发效率和质量的更多相关文章
- Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结
Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide ...
- JavaScript严谨模式(Strict Mode)提升开发效率和质量
http://flandycheng.blog.51cto.com/855176/982719 http://my.oschina.net/Jsiwa/blog/272761
- atitit.提升开发效率---mda 软件开发方式的革命--(2)
atitit.提升开发效率---mda 软件开发方式的革命--(2) 1. 一个完整的MDA规范包含: 1 2. 一个完整的MDA应用程序包含: 1 3. MDA能够带来的最大的三个好处是什么? 2 ...
- atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较
atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较 如下列举了服务器控件生命周期所要经历的11个阶段. (1)初始化-- --在此 ...
- atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表
atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建 ...
- atitit.提升开发效率---mda 软件开发方式的革命
atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MD ...
- atitit.提升开发效率---动态语言总结
atitit.提升开发效率---动态语言总结 ruby,python 都不错,就是语法不好, 应用不广泛,文档,工具都非常少,不推荐... php狠不错,就是高级特性不行.. 看来子有.net/jav ...
- Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型 橄榄型 直板型
Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型 橄榄型 直板型 项目主体三个部分 ui界面,中间层,数据库 按照不同的比重可以分为一下三个模型 哑铃型 橄榄型 直板型 哑铃型 开 ...
- 【Unity】4.2 提升开发效率的捷径--导入 Unity 5.3.4 自带的资源包
分类:Unity.C#.VS2015 创建日期:2016-04-06 一.简介 Unity自带的资源包也称为标准资源包.换言之,Unity自带的所有标准资源包导入到Unity项目中以后,都会放在Pro ...
随机推荐
- 【C#进阶系列】12 泛型
泛型是CLR和编程语言提供的一种特殊机制,它用于满足“算法重用” . 可以想象一下一个只有操作的参数的数据类型不同的策略模式,完全可以用泛型来化为一个函数. 以下是它的优势: 类型安全 给泛型算法应 ...
- Firemonkey TEdit 切换不同 KeyboardType 样式
用代码切换 Edit 不同的键盘样式: procedure TForm1.Button1Click(Sender: TObject); begin Edit1.KeyboardType := TVir ...
- ahjesus 前端缓存原理 转载
LAMP缓存图 从图中我们可以看到网站缓存主要分为五部分 服务器缓存:主要是基于web反向代理的静态服务器nginx和squid,还有apache2的mod_proxy和mod_cache模 浏览器缓 ...
- MySQL配置文件mysql.ini参数详解、MySQL性能优化
my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section. ...
- 使用loadrunner进行压力测试之----post请求
1. 发送post请求时使用web_submit_data 如: web_submit_data("create",//事务名 "Action=http://bizhi. ...
- Jconsole远程监控tomcat 的JVM内存(linux、windows)
Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到.它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界 ...
- C# 中几个小“陷阱”
每天写代码,偶尔就会有让你抓狂的时候:代码改了千百遍,蓦然回首,Bug就在灯火阑珊处……这里就列举一些容易犯错的几个小地方,以后遇到了其他的,再慢慢添加. 1. 获取程序当前运行路径 情景复现 ...
- 免费 PSD 素材:25个全新的界面设计资源
在这篇文章中,我们给大家收集了25套全新的 UI 设计素材.这些来自优秀设计师的 PSD 源文件素材让其它的设计师们在设计用户界面原型的时候能够非常便利. 网站用户界面,移动应用程序用户界面和对设计师 ...
- MyEclipse之无法连接到MySQL数据库
问题描述: 在连接mysql中出现如下警告 Fri Oct 28 02:21:53 CST 2016 WARN: Establishing SSL connection without server' ...
- 移动端事件touchstart、touchmove、touchend
关于这三个移动端的事件,详细的资料网上一搜一大片,我就不浪费时间了 1.移动端长按事件 var timer = null; $(ele).on('touchstart',function(){ tim ...