上一篇文章中,我们已经看到CruiseControl开始工作了。接下来我们先了解一个它的配置文件,然后再加入你的项目。
CruiseControl的配置文件的确了比较复杂,一方面是因为:它太灵活,太想完成你想达到的任何效果了。另一方面就是:它在文档化方面的确很落后。你只能在用户组中找答案。(不过,这也是学习的一个途径。如果你了解开源的话,你就会习惯于在用户组中找答案啦。)
再了解配置文件之前,让我们先定义一下我们可能会用到的术语。
- 工作目录(也就是CruiseControl的工作目录):是指启动CruiseControl的脚本目录。在Stand-alone情况下,就是文件cruisecontrol.bat所在的目录。如果你把它部署到了应用服务器中,那一般就指bin目录了。
2. Log 目录:就是CruiseControl存储所有构建项目日志信息的目录,默认值为工作目录下名为logs目录。
3. Projects目录:就是CruiseControl存储所有构建项目源代码的目录,默认值为工作目录下名为projects目录。
一、配置文件及其正确位置
配置文件包括两个,一个名为config.xml,另一个名为dashboard-config.xml。默认情况下,这两个文件和cruisecontrol.bat在同一下目录下,即工作目录。
如果在配置文件中,任何路径前面如果没有“/”的话,那就是相对于工作目录的。
另外,CruiseControl是可以改变他们的位置的,但建议在没有深入了解CruiseControl时,不要试图改变它们,因为我们的目标是让CruiseControl在最短的时间里为你创建价值。
二、Config.xml 文件
<project name="connectfour"> --这里的name应该和你在projects目录下的项目名完全一致。
<listeners> --用于监听项目状态的变化(指building,passed等)
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/> --这里的${project.name}
</listeners> 是指“connectfour”
<bootstrappers> --用于CruiseControl从Repository更新代码
<svnbootstrapper localWorkingCopy="projects/${project.name}" />
</bootstrappers>
<modificationset quietperiod="30"> --用于监听在quietperiod秒内,Repository是否变化
<svn localWorkingCopy="projects/${project.name}"/>
</modificationset>
<schedule interval="300"> --用于每隔interval秒,CruiseControl去检查并计划一次构建
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<log> --用于得到并保存log文件。默认情况下,将放在projects/${project.name}的目录下
<merge dir="projects/${project.name}/target/test-results"/> --用于将Build中生成的结果合并
</log> 到log文件中
<publishers> --用于将构建的结果(如二进制文件)发布到指定的位置
<onsuccess> --决定在构建成功的情况下,发布哪些内容
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
三、dashboard-config.xml
<!--
/********************************************************************************
这里省略了一些声明 :)
********************************************************************************/
-->
<dashboard>
<buildloop
logsdir="" --这里指定logs目录,一定要与config.xml文件中一致,否则你会有麻烦。
如果为空串,则默认为工作目录下的logs目录。
artifactsdir="" /> --这里指定artifacts目录,一定要与config.xml文件中一致
如果为空串,则默认为工作目录下的artifacts目录。
<features allowforcebuild=""/> --是否可以在Dashboard上强制构建(force build)
<trackingtool projectname="" baseurl="" keywords=""/> --这是用于与Mingle的集成
<subtabs> --在这里,你可以自己扩展你自己的subtab页,不过要先实现一些接口。
<subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" />
</subtabs>
</dashboard>
四、配置文件中的注意事项
1、如果logs、artifacts和projects目录不存在,在你运行CruiseControl之前,要手工建立它们。
2、确保两个配置文件中的logs/artifacts目录指向同一个目录。因为CruiseControl core会向其中写数据,而Dashboard会从中读数据。
五、小贴士
在Config.xml文件中,有几个元素的概念要先澄清一下(只针对当前示例,严格定义请参见CruiseControl的文档)。
- <listeners> 用于监听状态变化,如waiting for build,queued,building。一般不用改变。
- <bootstrappers>用于检出代码,CruiseControl有很多种bootstrapper,示例中使用的是SVN。localWorkingCopy属性是指你把代码检出到安装CruiseControl机器的哪个文件目录。
- <modificationset>用于监听Repository的变化频率,如果CruiseControl发现代码有变化,而且在quietperiod秒内没有其它用户检入代码(用于保证被构建的版本完整性),CruiseControl才会检出代码。
- <schedule >用于指定CruiseControl去检查Repository的时间间隔。并指定使用哪个构建文件。示例中使用的是ant脚本,构建文件是被检出项目的根目录下的build.xml(即在Repository中)。
- <log>用于指定CruiseControl把日志放在哪里,把哪些构建结果放在日志中。如果没有指定任何属性,默认为logs目录下的${project.name}目录。
- <publishers> 用于在构建结束后,发布哪些消息和文件。CruiseControl有很多插件可以做各种各样的Publishing。例如,在构建成功后,通过http调用指定的页面,也可以给指定的人发邮件。在失败时,播放音乐,通知team。
相关推荐
"CruiseControl step by step(2)"可能深入解析了配置文件的结构和语法,帮助用户定制自己的集成流程。 8. **使用CruiseControl创建Build Grid**:"使用CruiseControl创建你的Build Grid"可能介绍了如何利用Cruise...
CruiseControl是一款持续集成工具,它能够自动化地构建、测试和部署软件项目,极大地提高了开发效率和产品质量。在本文中,我们将深入探讨如何配置CruiseControl以实现定时运行,确保项目始终保持最新状态。 首先,...
标题与描述概述的知识点主要涉及了使用CruiseControl与Maven2进行持续集成的配置流程。这是一项在软件开发过程中非常关键的技术实践,它能够自动检测代码库中的更新,并自动执行构建、测试以及部署等任务,从而确保...
CruiseControl是一款持续集成工具,它能够自动化地执行软件项目的构建、测试和部署流程,以确保代码的质量和项目的稳定性。本篇文章将详细介绍CruiseControl的基本概念、安装过程、配置方法以及一个简单的使用示例。...
2. **配置环境变量**:确保已正确设置了 `JAVA_HOME` 环境变量,以便 CruiseControl 能够找到正确的 Java 运行环境。 3. **启动服务**:使用 Windows 系统时,可以通过运行 `cruisecontrol.bat` 文件来启动服务;...
2. **配置文件**:CruiseControl.rb的配置文件通常是`config/cruise_control.rb`,它定义了项目的构建流程,包括源码管理、构建触发器、构建任务、测试和报告等。 3. **构建生命周期**:CruiseControl.rb的构建过程...
2. **<sourcecontrol>**:配置源代码管理工具,如Git或SVN,用于检查代码更新。 3. ****:设置构建触发策略,如定时触发或基于代码变更触发。 4. ****:定义何时启动构建,如文件系统变更、定时任务或手动触发。 5. ...
### cruisecontrol、ant、svn持续集成 #### 一、概述 持续集成(Continuous Integration, CI)是一种软件开发实践,旨在通过频繁地将代码合并到共享的主分支,并自动化地进行构建和测试,来提高软件质量和减少集成...
主题:持续集成及CruiseControl技术交流 在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),...
CruiseControl.NET 是 .NET 平台下的持续集成工具,CruiseControl (Java) 的 .NET 移植版本。CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。Cruise...
CruiseControl-2.8.4.exe
cruisecontrol简介
2.CruiseControl的安装 CruiseControl的安装有多种方式,例如,如果使用Windows,可以下载二进制可执行文件,然后运行它。安装之后,CruiseControl预先配置了一个配置文件,轮询CVS(或其它版本控制系统)存储库并...
### CruiseControl.net 配置详解 #### 一、CruiseControl.net简介 CruiseControl.net是一种流行的持续集成(CI)工具,它可以帮助软件团队自动构建、测试和部署代码,从而提高开发效率和软件质量。本篇文章将围绕...
CruiseControl.NET-1.4.4-Setup.exe
CruiseControl.NET-CCTray-1.8.4.0-Setup.exe
**CruiseControl 使用总结** CruiseControl 是一个开源的持续集成工具,主要用于自动化软件构建、测试和部署过程。它的核心理念是通过频繁地构建项目,及时发现并解决代码中的问题,从而提高软件开发效率和质量。这...
CruiseControl是一款持续集成工具,它能够自动化软件构建、测试和发布的过程,是开发者进行敏捷开发和持续集成的重要工具。本教程将详细讲解CruiseControl的学习与实践。 **第一章 CruiseControl实践** 1.1 Cruise...