首页 > 编程 > .NET > 正文

持续集成 .Net手册

2024-07-10 13:12:18
字体:
来源:转载
供稿:网友

持续集成 .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>
配置测试用例

- <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了,至少目前如此;
最好避免中文路径,否则就需要手工为几个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外部工具,推荐使用
各种工具的安装、使用,在各自的文档里都非常详细,网上亦有无数资源
六、参考资料
dailybuild全攻略
draco.net

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表