`
bluestar
  • 浏览: 375784 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CruiseControl定时触发构建

阅读更多

CruiseControl倾向于通过源码变化来自动触发构建,但仍提供了几种方式来定时触发构建,以达到nightly building的效果。

在开始配置之前,先说明一下config.xml文件中Project元素的相关属性。

  • Project 元素对应你的一个需要构建的项目。其中:
  •  
    • name为其指定名称。
  •  
    • buildafterfailed 表示本次构建失败,是否要求CruiseControl继续下一次构建。
    •  
      • 当设置为true时,表示如果本次构建失败,即使没有任何人检入代码,间隔时间一到,CruiseControl也构建它。
    •  
      • 当设置为false时,表求如果本次构建失败,如果没有任何人检入代码,CruiseControl就不会再次构建它。
    • requireModification表示是否需要源文件发生变化才进行构建。
    •  
      • 当设置为true时,CruiseControl会根据modificationset元素的设置对源文件进行检查。
    •  
      • 当设置为false时,CruiseControl仅根据Schedule元素的设置进行定时构建。
    •  
      • 其默认值是ture。
    • forceOnly表示是否只能手工构建。
    •  
      • 当设置为true时,用户只能通过手工启动该项目的构建。
      • 当设置为false时,表示即可以根据条件自动构建,用户也可以通过手工构建(前提dashboard-config.xml中的配置必须是true)。
      • 其默认值是true。


为了达到定时构建的目的,首先要将Config.xml文件中该项目Project元素的requireModification属性设置为false。

一、每小时触发一次
设置Schedule元素的interval属性值为3600,即表示每小时会计划构建一次,由于requireModification已经设置为false,所以无论如何,CruiseControl都会构建。例如:

CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         < schedule interval ="3600" >
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !             
< ant anthome ="apache-ant-1.7.0" buildfile ="projects/${project.name}/build.xml" />
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         
</ schedule >



二、每天触发一次
       主要使用Schedule元素中各种构建器(如ant,nant,rake等)的time属性。time属性的格式为hhmm,例如2300就表示晚上十一点。

CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         < schedule >
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !             
< ant anthome ="xxxxxx" buildfile ="projects/${project.name}/xxxxx.xml" time ="2300" />
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         
</ schedule >    

当然,也可以使用pause子元素来指定在某段时间内不构建,如白天上班时间不构建,其它时间每隔一小时构建一次可用如下配置表示:

CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         < schedule interval ="3600" >
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !             
< ant anthome ="apache-ant-1.7.0" buildfile ="projects/${project.name}/build.xml" />
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !             
< pause starttime ="0800" endtime ="1800" />
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         
</ schedule >



三、每周触发一次
       主要使用Schedule元素中各种构建器(如ant,nant,rake等)的time及day属性。day属性值为英文星期几且大小写不敏感,如sunday。

CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         < schedule >
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !             
< ant anthome ="apache-ant-1.7.0" buildfile ="projects/${project.name}/build.xml"    day ="Sunday" />
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         
</ schedule >

如果想指定具体时间,可以同时使用time属性,例如星期日的晚上十一点可以表示如下:

CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         < schedule >
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !             
< ant anthome ="apache-ant-1.7.0" buildfile ="projects/${project.name}/build.xml" time ="2300" day ="Sunday" />
CruiseControl定时触发构建 -CruiseControl Advanced (1) - moon - Linux Linux Linux !         
</ schedule >


需要说明的是,如果项目的构建时间长于指定的时间间隔,则构建次数会少于理想次数。例如设置每小时构建一次,但是每次构建要花费一个半小时。
另外,day属性还不支持多天,即不支持day="Monday Wednesday Friday"这种设置方式。如果想达到每隔一天构建一次的话,只能使用Schedule的interval属性。

个人建议,CruiseControl最好将触发事件写在各种Builder之外,而当前情况是:如果该Builder不支持time和day属性(如exec),可能就无法象上面所说的那样配置了。

分享到:
评论

相关推荐

    CruiseControl使用指南.rar

    9. **CruiseControl定时触发构建**:在"CruiseControl Advanced (1)"中,闲亭信步(KISS)可能会讨论高级特性,如定时触发构建,使得构建任务可以在指定时间自动执行,以适应不同团队的工作节奏。 10. **Driving On...

    持续集成之CruiseControl.rb

    2. **触发构建**:如果有新提交,CruiseControl.rb会触发构建过程。 3. **构建项目**:执行构建脚本,编译代码、运行测试。 4. **生成报告**:生成构建报告,包括测试报告、覆盖率报告等。 5. **通知结果**:将...

    cruisecontrol配置文件.rar

    它通过监控版本控制系统中的变更,自动触发构建任务,及时发现并解决代码集成中的问题,从而提高开发团队的效率和软件质量。本压缩包“cruisecontrol配置文件.rar”包含了一些关键文件,它们是CruiseControl配置和...

    CruiseControl

    1. **自动构建**:当开发者提交新的代码到版本控制系统时,CruiseControl会自动触发构建过程。这有助于快速发现代码合并错误,防止问题积累。 2. **构建通知**:CruiseControl可以发送电子邮件或即时消息通知团队...

    CruiseControl简介及使用举例

    4. **触发构建**:CruiseControl检测到代码变更后,自动触发构建过程。 5. **执行构建**:构建代理执行构建脚本,包括编译、测试和打包等步骤。 6. **反馈结果**:构建完成后,CruiseControl更新Web界面展示构建...

    持续集成及CruiseControl技术交流(IBM)(演讲嘉宾:罗时飞).pdf

    - **构建触发**:支持定时触发、提交触发等多种方式启动构建。 - **构建任务**:支持多种构建工具,如Ant、MSBuild等。 - **构建结果通知**:可以通过邮件、RSS等方式通知相关人员构建结果。 - **插件扩展**:支持...

    项目管理uisecontrol-2.3.1

    CruiseControl-2.3.1是持续集成的重要工具,它会定期检查源代码仓库的变更,一旦发现新的提交,就会触发构建过程。这有助于开发者尽早发现并解决合并冲突和代码错误,减少集成时的问题。 **2. 构建自动化** Cruise...

    CruiseControl.NET:用于.NET平台的自动化连续集成服务器-开源

    1. **自动构建**:CruiseControl.NET支持配置自动构建任务,一旦有代码改动,便会触发构建过程。 2. **构建通知**:可以通过电子邮件、RSS feed或CCTray桌面通知应用程序,实时告知团队构建状态。 3. **项目监控**:...

    OpenDoc-CruiseControl.rar_Windows编程_C#_

    3. **构建触发器**:说明如何设置触发构建的条件,例如定时触发或提交时触发。 4. **构建脚本**:解释如何编写MSBuild脚本,用于编译C#代码,执行单元测试,并打包软件。 5. **测试集成**:介绍如何将单元测试框架...

    cctray 1.6

    1. **构建触发器**:支持多种触发方式,如定时触发、代码仓库变更触发等,确保代码的及时集成。 2. **构建过程管理**:用户可以自定义构建过程,包括编译、测试、打包等多个阶段,确保整个流程符合项目需求。 3. *...

    使用CruiseControl.Net进行持续集成

    构建触发器可以设置为定时触发或者代码提交触发。构建步骤则包括编译项目(通过MSBuild)和执行单元测试(如NUnit或xUnit)。 MSBuild是.NET框架的一部分,用于编译Asp.net项目。在CCNet配置文件中,我们指定...

    Maven2使用 搭建持续集成环境

    完成配置后,启动 CruiseControl 服务,它将根据配置定时检查 SVN 中的代码变更,并在有变更时自动触发 Maven2 构建项目。构建过程包括编译源代码、运行测试、生成文档和打包,最后将结果存入 `artifactdir` 供团队...

    Pragmatic Programmers - Pragmatic Project Automation(2004).pdf

    通过CruiseControl,开发者可以设置定时构建,或者在代码仓库有更新时触发构建。集成测试是软件测试的一个关键部分,它验证不同模块之间的接口是否按预期工作。将CruiseControl与集成测试结合使用,可以在代码合并到...

    持续集成aci3.pdf

    - **触发构建**:设置构建触发规则,如定时构建或代码提交后自动构建。 - **执行构建**:Hudson根据配置执行构建脚本,这可能包括编译、单元测试等步骤。 - **结果反馈**:构建完成后,Hudson会提供详细的构建报告,...

    CCNet.zip

    4. **构建触发器**:介绍如何设置触发规则,如定时触发、源代码变更触发等,以自动化构建流程。 5. **构建任务**:可能包含如何添加和配置各种构建任务,如编译代码、运行单元测试、打包应用等。 6. **构建通知**...

    CCNet 安装、部署、配置文档及过程

    3. **添加构建触发器**:设置触发构建的条件,例如每次提交时自动触发,或者定时触发。 4. **定义构建任务**:这包括编译、单元测试、静态代码分析等。例如,你可以使用标签中的Unit(单元测试框架)和fxcop(代码...

Global site tag (gtag.js) - Google Analytics