`

CruiseControl服务器安装配置

阅读更多

1. 认识CruiseControl

CruiseControl CI 服务器的老者,诞生已是多年,在许多方面, CruiseControl 服务器已经成为持续集成实践的同义词。而现在, CruiseControl 已发展成为一个家族式系统,包括 CruiseControl.java CruiseControl.net CruiseControl.ruby 等适应不同语言环境的实现,其强大的插件和扩展能力也是诸多同类系统无法比你的。而在这里,我只介绍该家族的本家 CruiseControl.java ,即 CruiseControl
下图是 CruiseControl 系统的架构图:
CruiseControl系统架构图
图中我们可以看到, CruiseControl 系统的主体是 Build Loop 机制,它采用了 Source Code 轮询机制,对持续集成环境的状态进行定时检测,并根据 config.xml 配置信息做出相应处理。 CruiseControl 服务器则使用 HTTP RMI 机制将持续集成服务公开到 Reporting 模块,同时使用 XML 数据格式对每次集成的数据进行归档。同时 CruiseControl 还可以集成了 RSS IM E-MAIL 等信息发布机制,最大程度将信息广播到团队的每个成员。
CruiseControl 系统集成循环的流程图见下图,图中显示了 CruiseControl 使用轮询机制对版本库进行检测,并对发生变更的代码进行预定操作的流程:
CruiseControl系统运行流程图
2. CruiseControl的安装
CruiseControl 的安装有许多方式。例如,如果使用 Windows ,会发现最简单的方式是下载二进制可执行文件,当然下载最新版本,然后运行它。要是高兴想研究,还可以下载源代码。
安装之后, CruiseControl 预先配置了一个配置文件,轮询 SVN (或其它版本控制系统)存储库并执行 ANT 构建脚本。服务环境不需要安装 Web 服务器, CruiseControl 已经内嵌了 Jetty web 服务程序。
3. CruiseControl的配置
CruiseControl 服务器启动时,会自动检测配置信息中的任务信息,并对其进行校验和初始化,之后所有的工作,都是依据该配置信息进行的。
CruiseControl 的配置使用了其安装目录下的 config.xml 文件,我们可以通过任一文本编辑器打开该配置文件,编辑各种配置信息。配置信息的定义遵循了标准 XML 文件格式,同时遵循了 ANT 自动构建配置信息的规则,因此建立一个普通工程的配置信息并非难事。
config.xml的节点配置说明如下:

<?
xmlversion='1.0'encoding='gb2312' ?>
2 < cruisecontrol >
3 < project name ="projectName" >
4
5 <!-- 用于处理一些项目有关的事件 -->
6 < listeners >
7 <!-- 用来访问项目当前创建的状态file:指定了状态文件的位置 -->
8 < currentbuildstatuslistener file ="logs/${project.name}/status.txt" />
9 </ listeners >
10
11 <!-- 在CC进行创建之前运行,是创建前的准备工作 -->
12 < bootstrappers >
13 <!-- 从源码控制系统更新本地文件:cvsbootstrappers、vssbootstrappers、svnbootstrapper -->
14 < svnbootstrapper localWorkingCopy ="projects/${project.name}" />
15 </ bootstrappers >
16
17 <!-- 检查各个源码控制系统中是否发生变化;quietperiod:单位为秒设定等待的时间 -->
18 <!-- 第一次的取出工作为手动执行 -->
19 < modificationset quietperiod ="300" >
20 < svn localWorkingCopy ="projects/${project.name}" />
21 </ modificationset >
22
23 <!-- 指定了构建的时间间隔单位为秒 -->
24 < schedule interval ="60" >
25 < ant anthome ="apache-ant-1.7.0" buildfile ="projects/${project.name}/build.xml" />
26 </ schedule >
27
28 <!-- 指定项目日志保存的地点 -->
29 < log >
30 <!-- 通常是指定CC的合并日志的目录 -->
31 < merge dir ="projects/${project.name}/test-reports" />
32 </ log >
33
34 <!-- 在buildloop结束之后运行,发布build的结果 -->
35 < publishers >
36 <!-- onsuccess -->
37 <!-- 用于对创建过程中产生的人工制品进行发布 -->
38 <!-- artifactspublisherdest="artifacts/${project.name}"file="projects/${project.name}/target/${project.name}.jar"/>
39 </onsuccess -->
40
41 <!--
42 mailhost=邮件主机
43 returnname=发件人
44 returnaddress=发件地址
defaultsuffix=默认邮件后缀
45 -->
46 < htmlemail
47 charset ="UTF-8"
48 mailhost ="test163.com"
49 defaultsuffix ="@xxx.com"
50 username ="xxx@163.com"
51 password ="xxx"
52 returnname ="CruiseControl"
53 returnaddress ="xxx@163.com"
54 subjectprefix ="构建日志"
55 xsldir ="webapps/cruisecontrol/xsl"
56 css ="webapps/cruisecontrol/css/cruisecontrol.css" >
57 < always address ="xxx@xxx.com.cn" />
58 < failure address ="xxx@xxx,yyy@yyy.com.cn" />
59
60 </ htmlemail >
61
62 </ publishers >
63
64 </ project >
65 </ cruisecontrol >

配置文件有一个 cruisecontrol 根结点,其下则是代表一个项目的 project 子节点,再下层是项目的具体配置,在此示例中,存在了 listeners bootstrappers modificationset schedule log 几个节点,分别代表了监听器、本地目录、变更目录、构建任务、日志工作。
3.1. 创建一个项目
<project name="CMAssess">
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
...............
</project>

项目工程下的build.xml说明:

<? xmlversion="1.0"encoding="UTF-8" ?>
2
3 <!-- ContinuousIntegration工程名称Gms默认任务CI -->
4 < project default ="CI" name ="xxx" basedir ="." >
5
6
7 <!-- 特性文件在特性文件中注意路径的正反斜杠问题 -->
8 < property file ="build.properties" />
9
10 <!-- ================================工程参数================================ -->
11
12 <!-- 工程中文名称 -->
13 < property name ="projectName_CN" value ="xxx" />
14 <!-- 工程目录 -->
15 < property name ="projectFolder" value ="${projcet.path}/${projcet.name}" />
16
17 <!-- 源程序目录 -->
18 < property name ="sourceFolder" value ="${projectFolder}/src/main/java" />
19 <!-- 配置文件目录 -->
20 < property name ="configFolder" value ="${projectFolder}/src/main/config" />
21 <!-- 测试程序目录 -->
22 < property name ="testFolder" value ="${projectFolder}/src/test/java" />
23 <!-- lib目录 -->
24 < property name ="libFolder" value ="${projectFolder}/WebRoot/WEB-INF/lib" />
25 <!-- 编译程序目录 -->
26 < property name ="classFolder" value ="${projectFolder}/WebRoot/WEB-INF/classes" />
27
28 <!-- 单元测试报告目录 -->
29 < property name ="reportFolder" value ="${projectFolder}/test-reports" />
30 <!-- 单元测试报告文件名 -->
31 < property name ="reportFileName" value ="junit-noframes.html" />
32
33 <!-- ================================发布设置================================ -->
34
35 <!-- 生成war文件 -->
36 < property name ="warFile" value ="${projectFolder}/${projcet.name}.war" />
37 <!-- web.xml文件 -->
38 < property name ="webFile" value ="${projectFolder}/WebRoot/WEB-INF/web.xml" />
39 <!-- 生成war文件的基础路径 -->
40 < property name ="warSource" value ="${projectFolder}/target/classes" />
41
42 <!-- ================================路径设置================================ -->
43
44 <!-- 编译过程中用到的路径 -->
45 < path id ="compilePath" >
46 <!-- 编译程序目录 -->
47 < pathelement path ="${classFolder}" />
48 <!-- 编译时lib路径 -->
49 < path refid ="libPath" />
50 </ path >
51
52 <!-- 单元测试时用到的路径 -->
53 < path id ="jUnitPath" >
54 <!-- 编译程序目录 -->
55 < pathelement path ="${classFolder}" />
56 <!-- 编译时lib路径 -->
57 < path refid ="libPath" />
58 </ path >
59
60 <!-- 编译时lib路径 -->
61 < path id ="libPath" >
62 <!-- lib目录 -->
63 < fileset dir ="${libFolder}" >
64 < include name ="**/*.jar" />
65 </ fileset >
66 </ path >
67
68 <!-- ================================持续集成================================ -->
69
70 <!-- 集成流程暂时没有加入Test -->
71 < target name ="CI" depends ="init,compile,test,makewar,deploy-catalina" description ="持续集成" />
72
73 <!-- 1.初始化目标目录,class;report -->
74 < target name ="init" description ="初始化" >
75
76 < echo > 正在删除编译程序目录 </ echo >
77 < delete dir ="${classFolder}" />
78 < echo > 正在创建编译程序目录 </ echo >
79 < mkdir dir ="${classFolder}" />
80
81 < echo > 正在删除单元测试报告目录 </ echo >
82 < delete dir ="${reportFolder}" />
83 < echo > 正在创建单元测试报告目录 </ echo >
84 < mkdir dir ="${reportFolder}" />
85 </ target >
86 http://www.blogjava.net/Images/OutliningIndica
分享到:
评论

相关推荐

    cruisecontrol配置文件.rar

    本压缩包“cruisecontrol配置文件.rar”包含了一些关键文件,它们是CruiseControl配置和运行的核心部分。 `main.jsp` 是CruiseControl Web界面的一个页面,用户可以通过这个页面查看构建状态、历史记录以及错误报告...

    [CruiseControl]binary安装和启动

    ### [CruiseControl] Binary安装与启动指南 #### 一、CruiseControl简介 CruiseControl 是一个持续...通过以上步骤,您可以顺利完成 CruiseControl 的安装与配置工作,并利用其提供的强大功能来优化您的软件构建流程。

    CruiseControl及ant配置

    1. **准备工作**:设置好开发环境,确保Ant和CruiseControl已安装并配置正确。 2. **CruiseControl构建**:配置好`config.xml`文件,启动CruiseControl服务。 3. **Ant构建**:编写好Ant的`build.xml`文件,由Cruise...

    CruiseControl简介及使用举例

    本篇文章将详细介绍CruiseControl的基本概念、安装过程、配置方法以及一个简单的使用示例。 首先,CruiseControl的安装通常涉及下载最新版本的软件包,如V2.6.2,这可以从其官方网站sourceforge.net获取。安装完成...

    利用CruiseControl软件进行持续集成

    当CruiseControl服务器启动时,会自动检测配置信息中的任务信息,并对其进行校验和初始化,之后所有的工作,都是依据该配置信息进行的。CruiseControl的配置使用了其安装目录下的config.xml文件,可以通过任一文本...

    CruiseControl使用指南.rar

    3. **搭建持续集成服务器**:"搭建你的持续集成服务器"系列教程可能详细介绍了从零开始建立CruiseControl服务器的过程,包括安装依赖、配置服务器环境以及设置首次构建。 4. **使用CruiseControl搭建持续集成环境**...

    CruiseControl学习教程.pdf

    - **CruiseControl**:安装并启动CruiseControl服务,通常通过修改`cruisecontrol.properties`配置文件来定制服务设置。 - **svnant**:这是一个Ant插件,用于在Ant构建脚本中执行Subversion操作,如获取最新代码。 ...

    CruiseControl笔记

    ### CruiseControl.net 配置详解 #### 一、CruiseControl.net简介 CruiseControl.net是一种流行的持续集成(CI)工具,它可以帮助软件团队自动构建、测试和部署代码,从而提高开发效率和软件质量。本篇文章将围绕...

    CruiseControl入门

    2. 配置:安装完成后,需要配置CruiseControl的XML配置文件(通常为cruisecontrol-config.xml)。配置项包括源码仓库地址、构建触发器类型、构建脚本路径等。 3. 启动服务:使用命令行工具启动CruiseControl服务。 4...

    电子邮件 CruiseControl 配置

    电子邮件CruiseControl配置是持续集成工具CruiseControl的重要组成部分,用于在构建过程开始、结束或出现失败时自动发送通知。CruiseControl通过读取XML配置文件来管理其工作流程,其中包括了邮件通知的设置。在本文...

    CruiseControl使用总结

    CruiseControl 的安装和配置是其使用的关键环节。通常,你需要下载CruiseControl的二进制包,然后根据项目需求配置XML配置文件。配置文件包含了项目源码位置、构建命令、测试脚本、邮件通知等信息。例如,你可以设置...

    CruiseControl-持续集成环境安装

    1、CruiseControl 的安装配置 2、CC + SVN + Msbuild 设置,配置文件详细描述 3、CCTray 的安装使用 4、SVN安装配置完全攻略教程 5、服务器相关信息 6、软件包:CruiseControl.NET-1.4.4-Setup.exe 7、软件包:...

    SVN+cruisecontrol 搭建持续集成开发环境

    CruiseControl 需要安装在一台服务器上,并且需要配置 CruiseControl,以便它可以自动地构建和测试软件。 在配置 CruiseControl 时,需要编辑 config.xml 文件,以便指定构建项目的详细信息,例如项目名称、SVN ...

    持续集成实践之CruiseControl

    1. **安装与配置**:首先,需要在服务器上安装CruiseControl,并根据项目需求配置XML配置文件,设置源代码仓库、构建触发器、构建任务等。 2. **集成源代码仓库**:将CruiseControl与版本控制系统(如Git、SVN)...

    Cruisecontrol

    - **部署CruiseControl Master**:在一台服务器上安装CruiseControl Master作为控制中心。 - **配置构建代理**:在多台服务器上部署构建代理,并通过Jini技术将其注册到CruiseControl Master。 - **定义构建任务**:...

    CruiseControl.net

    3. 配置CruiseControl.net的XML配置文件,定义项目、源码仓库、构建触发器、任务等。 ### 四.入门 1. **下载源代码**:配置CruiseControl.net从SVN仓库自动拉取代码。 2. **配置自动编译**:在配置文件中指定编译...

Global site tag (gtag.js) - Google Analytics