CruiseControl.NET 三言两语

对于稍微大一点的项目,持续集成,每日发布将成为项目组的一项重要工作,在敏捷项目组中尤为突出。为了提高持续集成的自动化程度,产生了很多开源的工具,这里我们主要关注windows下,基于.net开发环境。工具有:

  1. CruiseControl.NET 持续集成工具,运行于服务器上,根据用户的配置,把很多零散的任务进行在一起,实现定时运行、固定时间运行等方式把用户配置起来的流程跑起来,比如从SVN上更新代码、使用MSBuild编译工程或解决方案、使用代码分析工具对代码规范性进行检查、运行测试用例、最后把上面所有步骤的结果使用邮件等方式发布给负责人。
  2. MSBuild 微软.Net Framwork环境中的build工具。
  3. FxCop 微软提供的针对C#等托管语言代码分析工具。不太适合cpp
  4. NUnit, 单元测试工具,从JUnit移植过来,针对很对语言都提供了比较统一的接口,学习曲线比较平坦。针对cpp有CppUnit.
  5. NAnt。.Net下的构建工具,目前只提供命令行模式,他的主要作用是通过配置,实现很多自动化功能。比如在build之前要进行其他清理工作,build之后要进行其他复制等其他工作,都可以固定的在配置文件中配置。他把更多小的任务集成了在一起。

以上这些工具,都可以通过ccnet很好的组合在一起协同工作。下面简单介绍下ccnet的使用

  1. 做好准备,机器上需要安装IIS,相应的.net framwork
  2. 下载CruiseControl.NET,这个是服务器段软件,是必须要安装的。CruiseControl.NET-CCTray是客户端工具。
  3. 安装CruiseControl.NET之后,需要做的主要工作就是配置ccnet.exe目录下的ccnet.config文件,此文件中包含了所有要执行的配置,ccnet就是通过读取这个文件来提供服务。下面提供一个简单的配置

代码
<cruisecontrol>
<project name="MapPrj">
<!--工作目录,下载的源码将会被保存在这个目录下,如没有设置则会自被保存在安装目录下server子目录以project name为名称的目录下-->
<workingDirectory>e:\ccnet</workingDirectory>
<!--对这个项目的监控过程的日志记录目录-->
<artifactDirectory>e:\ccnet</artifactDirectory>
<!--使用什么样的方式标识每一个自动生成的版本,可以有多种不同的方式。Labeller Blocks -->
<labeller type="dateLabeller" />

<!--执行周期-->
<triggers>
<!--定时任务,可以设置在哪天的那个时间执行构建计划-->
<!--scheduleTrigger time="14:00" buildCondition="ForceBuild"-->
<!--以下配置节有指定,则会在指定的时间日期内执行,没有则每天执行-->
<!--<weekDays>
<weekDay>Monday</weekDay>
</weekDays>
-->
<!--/scheduleTrigger-->

<!--每隔多少时间执行一次-->
<intervalTrigger seconds="60" buildCondition="ForceBuild"/>
</triggers>

<!--使用的源码控制器类型-->
<sourcecontrol type="multi">
<sourceControls>
<svn>
<trunkUrl>http://***/TRUNK/INCLUDE</trunkUrl>
<workingDirectory>./inc</workingDirectory>
<username>用户名</username>
<password>密码</password>
</svn>
<svn>
<trunkUrl>http://***/TRUNK/VS2005/win32consoletest</trunkUrl>
<workingDirectory>./vs</workingDirectory>
<username>用户名</</username>
<password>nihao</password>
</svn>
</sourceControls>
</sourcecontrol>


<!--每次下载完代码后要执行的任务,可以有
* Build Publisher
* Email Publisher
* Executable Task
* File Merge Task
* ForceBuildPublisher
* Modification Writer Task
* MsBuild Task
* NAnt Task
* Null Task
* NUnit Task
* Visual Studio Task
* Xml Log Publisher
-->

<tasks>
<!--msbuild 自动编译任务-->
<msbuild>
<!--msbuild的路径,一般在系统目录下-->
<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory></workingDirectory>
<!--解决方案文件,相对project 的workingDirectory,MSBuild会找到这个文件,并对它进行编译-->
<projectFile>test.sln</projectFile>
<!--编译参数-->
<buildArgs></buildArgs>
<!--编译的目录类型-->
<targets></targets>
<!--过期时间-->
<timeout>60</timeout>
</msbuild>
</tasks>
</project>
</cruisecontrol>

如果编写配置没有错误,直接运行CruiseControl.NET即可看到监视窗口,当配置中时间满足时,程序将更新代码、编译程序等一套流程。

参考 

http://www.cnblogs.com/hjf1223/archive/2006/04/13/374655.html

http://www.evget.com/zh-CN/Info/catalog/10320.html

原文地址:https://www.cnblogs.com/gadfly/p/1900292.html