NET环境下每日集成(1):简介
最近做项目,每天有如下任务,需求---》任务分解--》开发人员开发--》开发人员提交---》项目编译--》测试--》规范检查--》发布,每天做这样的工作要用去不少时间,而且还有一些问题,比如开发人员修改后没有编译成功就上传了,我得不到及时的反馈,而且每次给客户调教版本,这些流程都需要走一遍,太花费时间了,
我就想有没有工具可以自动完成我的一些任务呢?最近看敏捷,发现里面提到每日集成,正好可以解决我的问题,经过一天的研究,终于在我的机器上搭建成功每日集成的环境,现在就记录一下我在.net环境下是如何搭建每日集成的
1. 流程
开发人员每一次迁入,CruisineControl.Net会自动从源码管理器获得最新源码,然后顺序执行运行我们设定好的一系列任务,下面是我的流程,当然你可以设置你自己的任务,获取源码后,首先进行编译,如果成功,就运行单元测试,单元测试成功就进行代码检查,检查成功后就发布,过程中只要有一步失败则终止。
不管成功和失败开发人员和项目经理都会得到及时通知(Email或者CCTray),同时可以到Dashiboard(自动内建的web站点)上查看集成的详细信息。
2. 实验环境环境
我的实验环境 Winxp sp2, VS2008, CruiseControl.Net, TFS Explore2008,TFS Server2005, Nunit, FxCop
你也可以用VS2005,TFS2005,VSS, Subversion等都是可以支持的,这里我主要描述TFS环境下。
上面大部分工具我想大家都熟悉了,这里要特别提一下CruiseControl.Net,CruiseControl.Net是ThoughtWorks公司持续化集成工具。它能够将代码版本控制,单元测试,代码规范检查,项目的发布部署按任务的方式组织起来进行自动化处理,它还有强大的日志记录功能,能将集成结果及时地反馈给项目管理人员和项目开发人员
可以参考上面的图。
.NET环境下每日集成(2):CruiseControl.Net安装
. 到这里下载
http://sourceforge.net/project/showfiles.php?group_id=71179&package_id=83198
CruiseControl.Net-1.3-Setup.exe是服务器
CruiseControl.NET-CCTray-1.3-Setup.exe 是客户端
2.下载完默认一路setup就可以了(黄色的项目名称),下面是配置完服务器后客户端的CCTray程序,每个程序员都可以看到,每当Check in后,开始编译时图标会变为桔黄色,失败会显示红色,成功会显示绿色,然后我们可以查看编译报告
3.右击选择Display web page 就可以浏览到前面说的DashBoard
4. 要想使用TFS,我们还得下载一个VSTSplugin
http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSCCNetPlugin
拷贝对应版本的plungin到CruiseControl.Net的Server目录下
NET环境下每日集成(3):CruiseControl.Net配置
1.要想使用CruiseControl.Net进行每日集成,必须对其进行必要的配置,配置文件是安装目录下的CCNet.Config
2.他是一个xml文件
就是说我们可以管理多个project
其中
节点名称- | 解释 | 类型 | 必须 | 默认值 |
---|---|---|---|---|
name | 项目的名称,必须是唯一的,名字可以随便起,最好能代表项目的意思,比如office, 等等 | string | yes | n/a |
queue | 就是集成的队列名字 | string | no | the project name |
queuePriority | 队列的优先级,比如多个项目同时做集成,那个级别高,那个就先编译。 | string | no | 0 |
workingDirectory | 集成的工作目录,后面的需要设地址的,可以以这个作为相对目录 | string | no | WorkingDirectory |
artifactDirectory | 集成的日志 | string | no | Artifacts |
webURL | 集成报告的URL | string | no | http://localhost/ccnet |
category | 集成的目录,集成报告中显示 | string | no | empty string |
modificationDelaySeconds | 源码修改后延迟多少秒执行集成 | integer | no | 0 |
sourcecontrol | 源码控制器配置,从哪里获得源码 | Source Control Block | no | Null Source Control Block |
triggers | 引起集成编译的触发器 | List of Trigger Blocks | no | |
state | 集成状态管理 | State Manager Block | no | Project State Manager |
labeller | 标签块,发布版本的标签,集成报告中用 | Labeller Block | no | Default Labeller |
tasks | 一些列顺序执行的任务 | List of Task Blocks | no | empty list |
prebuild | 编译之前顺序执行的任务 | List of Task Blocks | no | empty list |
publishers | 编译成功后执行的任务 | List of Task Blocks | no | |
externalLinks | Dashboard中附加的一些链接 | List of ExternalLinks | no | empty list |
3. 下面是我的测试项目的配置
4. 要想记录编译日志,我们还必须下载
,地址是:http://ccnetlive.thoughtworks.com/MSBuildXmlLogger-Builds/
把它放到我们的Projecte的<workingDirectory>目录下(示例是E:/dailybuild)
下篇我们将对几个复杂类型的配置节进行介绍