1.准备工作
使用的工具及版本:
CC:CruiseControl.NET-1.6.7981.1-Setup.exe;
CVS:cvsnt-2.5.03.2382.msi。
2.CVS的部署:略
心得
cvs添加用户失败
自己在同一主机上安装cvsnt的服务器和客户端(小乌龟)。
发现添加用户总是失败,提示no such user
经过确认发现,在cvsnt control panel→server setting→run as user里配置成系统管理员即可。
貌似在同一主机上配置cvs服务端和客户端,默认选项是不可以的
CVSNT安装好后,创建仓库及用户。
本文使用的仓库路径是:F:\Test\ServerCVS
创建了两个用户:OK(管理员),user1(普通用户)
在仓库中创建一个文件夹,用于存放代码工程的所有内容,文件夹名称为: CCOneSolution1,
用user1用户checkout下这个文件夹,并在其中添加代码工程,解决方案名是:CCOneSolution1,其中包含一个工程,名称是:CCOne,其代码如下:
添加完成之后,将整个工程上传至CVS。上传成功后,CVS仓库中的文件夹内容如下:
至此,CVS相关的配置结束。
3.CC.net的配置
基本配置
1. 打开配置文件
开始=>所有任务=> CruiseControl.NET=> CruiseControl.NET Config
2. 在config中创建一个项目结点并对其命名:
项目结点为:<project>,名称为CCOneSolution。
3.配置工作路径(<workingDirectory>),其他结点的<workingDirectory>可以写成这个工作路径的相对路径。
4. 配置日志记录路径
注:如果以上两个路径没有配置,则会在cc.net的安装目录下,自动创建一个以project name为名的文件夹,如下:
两个文件夹分别对应工作路径和日志路径。
5. 配置CC.net的任务启动触发器:Triggers
最简单的场景:每1分钟检测一次代码库,有更新则下载最新代码,然后编译…等
这时triggers的配置如下:
CC.NET提供了6种触发器:
IntervalTrigger,顾名思义,就是每隔一定时间触发任务的触发器。
FilterTrigger 不能单独工作,而必须与其他Trigger一起使用,之所以叫FilterTrigger是因为它是用来过滤触发条件,例如我们原本设置了一个 IntervalTrigger,每5分钟触发一次,但我只希望这个IntervalTrigger只在工作时间触发,那么我们就可以用 FilterTrigger来限制IntervalTrigger的触发时间为9:00 ~ 18:00。
MultiTrigger类 似于WPF中的MultiTrigger,可同时执行多个触发器,并对触发器结果做And或Or操作。
ScheduleTrigger 和Windows自带的计划任务的功能非常类似,可以在特定时间触发任务。
ProjectTrigger是仅当指定的CC.NET项目 build完成后才会触发任务的触发器。
UrlTrigger是仅当某个特定的Url页面的内容发生变化时才会触发任务的触发器。
详细信息请参考:http://www.cnblogs.com/tonyqus/archive/2011/02/11/1943920.html。
6. 配置检测到更新后,延迟多少秒后下载代码,(<modificationDelaySeconds>),下图配置为延迟1秒。
4.版本控制的相关配置
1.版本控制结点定义:将autoGetSource设置为true,CC.Net会通过监视CVS中代码的版本变化,自动从版本管理器中获取源代码。2.指定cvs的路径(< executable >)如果本机装了CVSNT,则路径为如果本机只是CVS的一个客户端,安装了WinCVS,则cvs的路径是:3.配置工作路径,cc.net会将最新的代码下载到这个路径下(<workingDirectory>)4.配置cvsroot(<cvsroot>)5.配置module来指定需要下载cvs仓库中的哪个项目,这里需要下载的是:CCOneSolution1至此,cvs相关配置结束。此时,开启cc.net服务后,如果代码有更新,那么F:\Test\CCCVS\CCOneSolution1文件夹下会有最新版的代码集,如果没有,请再测确认以上配置。6.代码Buid配置7.发布配置8.msTest配置心得CCtray安装
装了CC.net以后,打开网络公告版,左侧页面有下载
在ccnet.config里指定路径失败
不支持中文路径和日文路径。建议都用英文吧
CCValidator的使用
可以检查ccnet.config的格式是否正确
添加<publishers>后查询日志失败,无日志log
在<publishers>里添加<xmllogger />即可