CruiseControl初体验

来源:互联网 发布:java static 变量 编辑:程序博客网 时间:2024/04/29 13:07

最初接触CruiseControl是在以前公司的build系统中。每次提交代码后都等着CruiseControl的email通知 - 如果编译通过了才会放心。所以和其他同事一样认为CruiseControl(为了方便简称为CC了)是一个build的环境。最近因为工作需要搭建build/release环境才有机会认识CC的庐山真面目。

要讨论CC,就需要先谈谈持续集成的概念。持续集成(Continuous Integration)是软件开发中的一中最佳实践(Best Practice),被很多开发人员推崇尤其是敏捷开发的粉丝们。我们先来看看Martin Fowler大叔怎么说吧。

 

 Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.

看官明白了吧!简单一点说吧,其实呢持续集成就是做的修改尽早地被集成到系统中去,就算是有错误也能够较早发现,修正的代价也会低一些。这里持续集成的概念就比build要大一些了,除了build之外,根据实际项目需要还可以包含单元测试、集成测试、回归测试、安装和部署等等。

下面我们用CruiseControl来一步一步搭建持续集成环境吧。

1. 安装

这里不详述安装的步骤了。到这里来下载CC: http://cruisecontrol.sourceforge.net/

CruiseControl是基于JAVA的,安装过程比较简单。

我的环境是:Win2003 Server, CruiseControl 2.7.2.

2. 配置

CC的配置不算太复杂,如果你用过ant或者NAnt就会很容易上手。我以前没有这方面的经验,刚开始有点不习惯。等到耐心地看完CC的参考文档就挺喜欢它了。尽管CC提供了GUI的配置工具,我还是选择了直接编辑config.xml文件。呵呵,也许这是所有程序员的坏习惯吧 - 只要项目进度不是很紧,一定要把内部的东西探个究竟。

个人认为CC配置中有几个基础概念需要先明白。

2.1 Project

CC的配置是按照project来组织的。比如说如果你需要daily build和weekly build你可以创建两个projects. 比如HelloWorld_Daily和HelloWorld_Weekly. 这些项目会在CC的portal和dashborad上看到。

2.2 ModificationSet 让CC检测代码库是否有更新。<project>有个attribute叫requireModification,如果该值为true,CC会检测代码库更新,如果有更新CC才会启动build;如果该值为false,无论代码时候有变动CC都会启动build。 2.3 Schedule 这个是每个project中的重头戏。build的工作一般都会由它完成。比如可以设置build的时间间隔。<schedule>支持ant, NAnt,exec等build系统,套用一句时髦的话可以说是“很好很强大”。 2.4 Build Artifacts Build Artifacts指的就是build的产品,如可执行模块,安装文件等。build完成之后CC会将这些文件拷贝到你指定的位置。在CC的portal上能够下载到每次成功build后的artifacts。 2.5 Bootstrapper

Bootstrapper用来执行build开始之前需要的准备工作,比如同步最新的代码。CC对于当前流行的SCC系统如SVN, Perforce,CVS等等有很好的支持,配置起来也是很简单直观。

2.6 Publisher

Build完成之后,无论成功还是失败了,都需要做一些善后的工作,比如发布build的结果,email通知,IM通知等。在Build/Release过程中这是很重要的一环。

3. 结语

以上只是简单地列举了CC中的几个概念,具体的细节可以参考文档。

原创粉丝点击