从上图可以看出,CC主要包括了三个组件:
A、Build Loop组件:主要负责根据外部的xml配置,定时、周期性的根据外部SCM的状态启动构建任务,并将构建结果通过Email/IM/RSS等方式通知到相应的客户端。
B、JSP的报告组件:提供了一个web页面供我们查看构建结果以及每次构建发布的工件。
C、Dashboard组件:提供了一个可视化的界面,让我们可以清楚的看到各个项目的构建状态 。
工具的官方网站:http://cruisecontrol.sourceforge.net/
持续集成(CI)其实是由一系列的最佳实践所构成:
.源代码的版本控制和管理
- 自动化构建
- 自动化测试
- 代码审查
- 自动发行和部署
- 持续反馈
使用持续集成的作用:
持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。诸如 CruiseControl 之类的检查工具是在后台运行的,它们轮询版本控制存储库,从中寻找更改之处。当发现某一更改时,这类工具就会通过 Ant 执行预定义的构建脚本。持续检查借助持续集成的实践得以改进。
持续集成周期包括以下几个步骤:
1. 持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
4. 运行所有的自动化测试。
5. 进行代码分析。
6. 产生可执行的软件,能够提供给测试人员进行测试。
CI的概念:
在没有应用持续集成之前,传统的开发模式是项目一开始就划分模块,然后等所有的代码都
开发完成之后再集成到一起进行测试,随着软件技术的发展,各种软件方法百花齐放,软件
规模也在扩大,软件需求越来越复杂,软件已经不能简单地通过划分模块的方式来开发,需
要项目内部互相合作,划 分模块这种传统的模式的弊端也越来越明显,由于很多 bug在项目
的早期就存在,到最后集成的时候才发现问题,开发者需要在集成阶段花费大量的时间来寻
找 bug 的根源,加上软件的复杂性,问题的根源很难定位,甚至出现不得不调整底层架构的
情况,在这个阶段的除虫会议(bug meetings)特别多,会议的内容基本上都是讨论 bug 是
怎么产生的,最后往往发展成为不同模块的负责人互相推诿责任。
持续集成最大的优点是可以避免这种传统模式在集成阶段的除虫会议。持 续集成主张项目的
开发人员频繁的将他们对源码的修改提交(check in)到一个单一的源码库,并 验证这些改变是
否对项目带来了破坏,持续集成包括以下几大要点:
1 访问单一源码库,将所有的源代码保存在单一的地点(源码控制系统), 让所有人都能
从这里获取最新的源代码(以及以前的版本)。
2 支持自动化创建脚本,使 创建过程完全自动化,让任何人都可以只输入一条命令就完成
系统的创建。
3 测试完全自动化,要求开发人员提供自测试的代码,让 任何人都可以只输入一条命令就
运行一套完整的系统测试。
4 提供主创建,让任何人都可以只输入一条命令就可以开始主创建。
5 提倡开发人员频繁的提交(check in)修改过的代码。
持续集成的关键是完全的自动化,读取源代码、编译、连接、测试,整个创建过程都应该自
动完成。对于一次成功的创建,要求在这个自动化过程中的每一步都不能出错,而最重要的
一步是测试,只有最后通过测试的创建才是成功的创建。
在持续集成里面创建不再只是传统的编译和连接那么简单,创建还应该包括自测试,自测试
的代码是开发人员提交源码的时候同时提交的,是针对源码的单元测试(源自 XP 的实践),
将所有的这些自测试代码整合到一起形成测试集,在 所有的最新的源码通过编译和连接之后
还必须通过这个测试集的测试才算是成功的创建。这 种测试的主要目的是为了验证创建的正
确性,M cConnell称之为“冒烟测试”,在 持续集成里面,这 叫做集成验收测试Build Verify Test,
简称 BVT。BVT 测试是质量的基础,QA 小组不会感受到 BVT 的存在,他们只针对成功的
创建进行测试(如功能测试)。
BVT 测试应该尽量的详尽,详尽的测试才能发现更多的问题,而由此得到的反馈结果也更
有参考意义,测试应该全部执行完毕,这样得到的反馈结果才是完整的,而不是遇到错误就
放弃测试过程。
持续集成和日创建相比还有以下特点:
1 持续集成强调了集成频率,和日创建相比,持续集成显得更加频繁,目前推荐的最佳实
践是每一个小时就集成一次。
2 持续集成强调及时反馈,日创建的目的是得到一个可以使用的稳定的发布版本,而持续
集成强调的是集成失败之后向开发人员提供快速的反馈,当 然成功创建的结果也是得到
稳定的版本。
3 日创建并没有强调开发人员提交(check in)源码的频率,而持续集成鼓励并支持开发
人员尽快的提交对源码的修改并得到尽快的反馈。
从上面列出的续集成和日创建相比的特点来看,很明显,“ 频率”和“反馈”这两个词出现
的特别多,持 续集成有一个与直觉相悖的基本要点,那 就是“ 经常性的集成比偶尔集成要好”。
Martin Fowler 认为对于持续集成来说,集成越频繁,效果越好 ,如果你的集成不是经常进
行的(少于每天一次),那么集成就是一件痛苦的事情,如果集成偶尔才进行一次(一周甚
至一个月), 等到集成阶段发现bug,然后找原因解决bug,会耗费你大量的时间与精力,而
且这种方式有点象传统的集成模式,这违背了持续集成的初衷。
根据 Martin Fowler 的观点,项目 bug 的增加和时间并不是线性增长的关系,而是和时间的
平方成正比,两次集成间隔的时间越长,bug 增加的数量越超过你的预期,解决 bug 付出的
工作量也越大,而你越觉得付出的工作量越大,你就越想推迟到以后去集成,企图到最后一
次性解决问题,结果 bug 产生的就更多,导致下一次集成的工作量更大,你越感觉到集成的
痛苦,就越将集成的时间推后,最后形成恶性循环。
因此如果集成的结果是让你感到痛苦,也许就说明你应该更频繁地进行集成。频繁的集成和
及时的反馈鞭策着项目小组积极的面对问题,而 不是将问题推到最后来解决,如 果方法正确,
更频繁的集成应该能减少你的痛苦,让你节约大量时间。
因为持续集成最终是通过测试来验证创建,所以你会发现对于持续集成的频率的要求跟
Kent Beck 提出的测试驱动的开发方法里面测试第一的理念完全一致。
需要注意的是从项目的一开始就引入持续集成可以尽早的发现 bug,但是并不代表持续集成
可以帮你你抓到所有的 bug。持续集成的排错能力取决于测试技术,众所周知,无法证明已
经经过测试的代码就已经找到了所有的错误。
前面列举了持续集成这么多优点,但是创建一个持续集成的环境技术上是比较复杂的,也需
要一定的时间,关键是在于持续集成可以“及时”抓到足够多的 bug,从根本上消除传统模
式的弊端,这就已经值回它的开销了
二:CruiseControl持续集成环境的配置安装
第一步:
A、从上面的官方网站下载最新的稳定版本,当前最新的稳定版本为2.8.4
B、下载JAVA安装包
第二步:解压下载的工具包(由于CC是绿色版的,所以解压即可不需安装),并在你的环境变量中增加两个环境变量
A、JAVA_HOME设置为你的JAVA安装目录
B、设置ANT_HOME为CC解压目录下的apache-ant-1.7.0目录,并且将“你的下载目录\cruisecontrol-bin-2.8.4\apache-ant-1.7.0\bin”加入你的path路径中
相关推荐
安装完成后,系统会包含一系列必要的文件和目录,比如`cruisecontrol.bat`用于启动服务,`config.xml`作为主要的配置文件,`apache-ant-1.6.5`是CruiseControl依赖的Ant环境,`docs`包含使用文档和示例,`lib`存放...
### Maven2+Subversion+CruiseControl配置详解 #### 1. Maven2导入Subversion仓库 Maven2是Apache的一个开源项目,用于项目管理和综合工具,其强大的依赖管理机制和生命周期模型使其成为Java项目自动化构建的首选...
2. **配置环境变量**:确保已正确设置了 `JAVA_HOME` 环境变量,以便 CruiseControl 能够找到正确的 Java 运行环境。 3. **启动服务**:使用 Windows 系统时,可以通过运行 `cruisecontrol.bat` 文件来启动服务;...
电子邮件CruiseControl配置是持续集成工具CruiseControl的重要组成部分,用于在构建过程开始、结束或出现失败时自动发送通知。CruiseControl通过读取XML配置文件来管理其工作流程,其中包括了邮件通知的设置。在本文...
`config.xml`是CruiseControl的核心配置文件,它定义了CruiseControl如何执行构建任务,主要包括以下几个方面: 1. **监听器(Listeners)**:用于监听项目的构建状态变化,并将这些变化通知给指定的目标,例如记录...
6. **向CruiseControl中加入新项目**:"CruiseControl step by step(3)"部分可能详细介绍了如何添加新的项目到CruiseControl服务器,包括项目配置文件的修改和项目构建规则的设定。 7. **了解CruiseControl的配置...
安装之后,CruiseControl预先配置了一个配置文件,轮询CVS(或其它版本控制系统)存储库并执行ANT构建脚本。服务环境不需要安装Web服务器,CruiseControl已经内嵌了Jetty web服务程序。 3.CruiseControl的配置 当...
- **CruiseControl**:安装并启动CruiseControl服务,通常通过修改`cruisecontrol.properties`配置文件来定制服务设置。 - **svnant**:这是一个Ant插件,用于在Ant构建脚本中执行Subversion操作,如获取最新代码。 ...
通常,你需要下载CruiseControl的二进制包,然后根据项目需求配置XML配置文件。配置文件包含了项目源码位置、构建命令、测试脚本、邮件通知等信息。例如,你可以设置CruiseControl在每次构建后发送邮件通知,以便...
在配置 CruiseControl 时,需要编辑 config.xml 文件,以便指定构建项目的详细信息,例如项目名称、SVN 仓库的地址、构建脚本的地址等。同时,需要在 CruiseControl 中配置构建脚本,以便自动地构建和测试软件。 在...
CruiseControl的配置文件中包含了对构建代理的详细配置,例如: ```xml <cruisecontrol> <!-- 具体配置细节 --> </cruisecontrol> ``` 在配置文件中,可以定义用户自定义属性(`user-defined.properties`),...
2. 配置:安装完成后,需要配置CruiseControl的XML配置文件(通常为cruisecontrol-config.xml)。配置项包括源码仓库地址、构建触发器类型、构建脚本路径等。 3. 启动服务:使用命令行工具启动CruiseControl服务。 4...
【标题】"pyant及Cruisecontrol中的试用"涉及到的是两个重要的持续集成工具——PyAnt和CruiseControl,它们在Python开发环境中扮演着关键角色。 PyAnt是Apache Ant的一个扩展,Ant是Java世界中广泛使用的构建工具,...
1. **CruiseControl.xml**:这是CruiseControl的核心配置文件,定义了构建项目的源代码位置、构建计划、触发条件、构建步骤、通知设置等。你需要根据项目需求详细编写此文件。 2. **构建计划**:在CruiseControl....
3. 配置CruiseControl.net的XML配置文件,定义项目、源码仓库、构建触发器、任务等。 ### 四.入门 1. **下载源代码**:配置CruiseControl.net从SVN仓库自动拉取代码。 2. **配置自动编译**:在配置文件中指定编译...
2、CC + SVN + Msbuild 设置,配置文件详细描述 3、CCTray 的安装使用 4、SVN安装配置完全攻略教程 5、服务器相关信息 6、软件包:CruiseControl.NET-1.4.4-Setup.exe 7、软件包:CruiseControl.NET-CCTray-1.4.4-...
【CruiseControl + ANT + SVN】是一个集成开发环境(IDE)自动化构建和版本控制的解决方案。这个组合在软件开发过程中发挥着关键作用,确保代码的持续集成和版本管理。下面将详细阐述这三个组件以及它们如何协同工作...