持續集成

NET环境下每日集成(1):简介

最近做项目,每天有如下任务,需求---》任务分解--》开发人员开发--》开发人员提交---》项目编译--》测试--》规范检查--》发布,每天做这样的工作要用去不少时间,而且还有一些问题,比如开发人员修改后没有编译成功就上传了,我得不到及时的反馈,而且每次给客户调教版本,这些流程都需要走一遍,太花费时间了,

我就想有没有工具可以自动完成我的一些任务呢?最近看敏捷,发现里面提到每日集成,正好可以解决我的问题,经过一天的研究,终于在我的机器上搭建成功每日集成的环境,现在就记录一下我在.net环境下是如何搭建每日集成的

1. 流程

开发人员每一次迁入,CruisineControl.Net会自动从源码管理器获得最新源码,然后顺序执行运行我们设定好的一系列任务,下面是我的流程,当然你可以设置你自己的任务,获取源码后,首先进行编译,如果成功,就运行单元测试,单元测试成功就进行代码检查,检查成功后就发布,过程中只要有一步失败则终止。

不管成功和失败开发人员和项目经理都会得到及时通知(Email或者CCTray),同时可以到Dashiboard(自动内建的web站点)上查看集成的详细信息。

持續集成_第1张图片

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张图片

2.下载完默认一路setup就可以了(黄色的项目名称),下面是配置完服务器后客户端的CCTray程序,每个程序员都可以看到,每当Check in后,开始编译时图标会变为桔黄色,失败会显示红色,成功会显示绿色,然后我们可以查看编译报告

持續集成_第3张图片

3.右击选择Display web page 就可以浏览到前面说的DashBoard

持續集成_第4张图片

持續集成_第5张图片

4. 要想使用TFS,我们还得下载一个VSTSplugin

http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSCCNetPlugin

拷贝对应版本的plungin到CruiseControl.Net的Server目录下

posted @ 2008-04-23 14:08 王德水 阅读(606) 评论(3)   编辑 收藏 网摘 所属分类: 项目管理

1167325.html?type=1&webview=1

NET环境下每日集成(3):CruiseControl.Net配置

1.要想使用CruiseControl.Net进行每日集成,必须对其进行必要的配置,配置文件是安装目录下的CCNet.Config
2.他是一个xml文件

< cruisecontrol >
    
< project  ..  >
    
project >

    
< project  ..  >
    
project >

    .
    .
cruisecontrol >
 
   

就是说我们可以管理多个project
其中...的结构如下

< project  name ="Project 1"  queue ="Q1"  queuePriority ="1" >
    
< workingDirectory > yourWorkingDirectory workingDirectory >
    
< artifactDirectory > yourArtifactDirectory artifactDirectory >
    
< category > Category 1 category >
    
< webURL > http://server1/ccnet/server/local/project/testProject/ViewLatestBuildReport.aspx webURL >
    
< modificationDelaySeconds > 2 modificationDelaySeconds >
    
< triggers >
        
< yourFirstTriggerType  .. />
        
< yourOtherTriggerType  .. />
    
triggers >
    
< state  type ="yourStateManagerType"  .. />
    
< sourcecontrol  type ="yourSourceControlType"  .. />
    
< labeller  type ="yourLabellerType"  .. />
    
< prebuild >
        
< yourFirstPrebuildTask  .. />
        
< yourOtherPrebuildTask  .. />
    
prebuild >
    
< tasks >
        
< yourFirstTask  .. />
        
< yourOtherTask  .. />
    
tasks >
    
< publishers >
        
< yourFirstPublisherTask  .. />
        
< yourOtherPublisherTask  .. />
    
publishers >
    
< externalLinks >
        
< externalLink  name ="My First Link"  url ="http://somewhere/"   />
        
< externalLink  name ="My Other Link"  url ="http://somewhere.else/"   />
    
externalLinks >
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. 下面是我的测试项目的配置

< cruisecontrol >
< project  name ="TestProject" >
     
< workingDirectory > E:/dailybuild workingDirectory >
        
< artifactDirectory > E:/dailybuild artifactDirectory >
        
< category > TestProject category >
    
< sourcecontrol  type ="vsts"  autoGetSource ="true"   applyLabel ="false" >
          
< server > http://tfs1.TestProject.com:8080 server >          
          
< domain > TestProject.com domain >
          
< project > $/TestProject projects/Analysis and Design/Concierge/Prototype project >
          
< workingDirectory > E:/dailybuild/TestProject workingDirectory >
          
< cleanCopy > true cleanCopy >  
    
sourcecontrol >  
< tasks >
< msbuild >
  
< executable > C:/WINDOWS/Microsoft.NET/Framework/v3.5/MSBuild.exe executable >
  
< workingDirectory > E:/dailybuild/TestProject/Solution/TestProject workingDirectory >
  
< projectFile > TestProject.sln projectFile >  
  
< logger > E:/dailybuild/ThoughtWorks.CruiseControl.MsBuild.dll logger >
  
< targets > Build targets >
  
< timeout > 900 timeout >
msbuild >
< buildpublisher >
     
< sourceDir > E:/dailybuild/TestProject/Solution/TestProject/PrecompiledWeb/WEB sourceDir >
     
< publishDir > E:/dailybuild/publish publishDir >
     
< useLabelSubDirectory > false useLabelSubDirectory >
buildpublisher >

tasks >
< triggers >
        
< intervalTrigger  name ="continuous"  seconds ="600"  buildCondition ="IfModificationExists" />        
triggers >
< labeller  type ="dateLabeller"   />
project >
cruisecontrol >

4. 要想记录编译日志,我们还必须下载

,地址是:http://ccnetlive.thoughtworks.com/MSBuildXmlLogger-Builds/ 
把它放到我们的Projecte的<workingDirectory>目录下(示例是E:/dailybuild)

下篇我们将对几个复杂类型的配置节进行介绍

 

你可能感兴趣的:(持續集成)