当前位置: 首页 > news >正文

持续集成工具CC介绍

CruiseControl:简称CC,持续集成工具,主要提供了基于版本管理工具(如CVS)感知变化或每天定时的持续集成,并提供持续集成报告、Email、Jabber等等方式通知相关负责人,其要求是需要进行日构建的项目已编写好全自动的项目编译脚本(可基于Maven或Ant)。

在这里以一个项目来简要的说说cc的使用,通常项目对于日构建的类型的需求分为两种:
1、每天的定时自动集成。
2、感知版本管理工具中的变化而进行自动集成。

项目对于日构建的目标通常为:
1、感知版本管理工具的变化,如发现有变化,则进行集成。
2、调用项目编译脚本进行项目集成。
3、合并项目编译脚本产生的单元测试、功能测试的日志。
4、将集成报告发布至网站中。
5、将集成的结果以邮件、jabber等等方式通知相应的负责人。

基于上面的要求,项目编译脚本采用Maven,版本管理工具采用CVS,持续集成工具采用CC,假设已编写好了基于Maven的项目编译脚本,CruiseControl的脚本如下编写:
<?xml version=1.0 encoding=UTF-8?>
<cruisecontrol>
<project name=demo buildafterfailed=true>
<!--每次检测是否有变化时先运行此处 -->
<bootstrappers>
<currentbuildstatusbootstrapper file=logs/demo/buildstatus.txt/>
</bootstrappers>
<!--检测是否有变化,如有变化则开始集成 -->
<modificationset quietperiod=10>
<!-- 基于cvs的检测 -->
<cvs localworkingcopy=demo/>
</modificationset>
<!-- 持续集成-->
<schedule interval=18>
<!-- 项目的编译脚本 -->
<maven mavenscript=D:/tools/maven/bin/maven.bat
projectfile=demo/project.xml
goal=demo:build/>
</schedule>
<!--持续集成过程的日志记录以及需要合并的日志 -->
<log dir=logs/demo>
<!-- 合并项目编译脚本中产生的单元、功能测试日志 -->
<merge dir=demo/target/test-reports/>
</log>
<!--持续集成后结果的公布 -->
<publishers>
<currentbuildstatuspublisher file=logs/demo/buildstatus.txt/>
<!-- 发布持续集成的结果至网站中,此方法还不是最理想的 -->
<execute command=D:/tools/cc/reporting/jsp/build.bat war/>
<!-- 邮件通知相关的负责人 -->
<email mailhost=smtp.yourdomain.com
returnaddress= buildmaster@yourdomain.com
skipusers=true
reportsuccess=fixes
subjectprefix=[CruiseControl]
buildresultsurl= http://buildserver:8080/cruisecontrol/buildresults>
<failure address= developers@yourdomain.com />
<success address= developers@yourdomain.com />
</email>
</publishers>
</project>
</cruisecontrol>

关于CC 的脚本中xml的规范、cc的安装和运行请参考CruiseControl的官方网站:
cruisecontrol.sourceforge.net

相关文章:

  • java随机数_Java随机数Random()
  • Delphi调用WMI读取USB设备的PID和VID
  • java 计算器程序_java计算器程序
  • Log4j被OSGI撞了一下腰
  • 比较分析Vector、ArrayList和hashtable hashmap数据结构
  • java二进制类型_Java数据类型 - 原始和二进制文字
  • hibernate的Criteria的一个bug
  • toad导出mysql数据库_将toad里的数据库结构导出到pdm
  • 炒股精髓:多位高手多年心血结晶
  • 好神奇哟
  • java linux 压缩文件夹_Linux下压缩某个文件夹(文件夹打包)
  • java中mapper层作用_Java的MyBatis框架中Mapper映射配置的使用及原理解析
  • java空接口_java中RandomAccess接口明明是个空接口,有什么用呢?
  • java pdf base64_Javaweb中利用pdf.js显示oracle数据库中Base64编码转为的PDF
  • SQL Server 2005豪华盛宴
  • css属性的继承、初识值、计算值、当前值、应用值
  • PAT A1050
  • Promise初体验
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Twitter赢在开放,三年创造奇迹
  • Vue 2.3、2.4 知识点小结
  • vue-cli3搭建项目
  • 设计模式走一遍---观察者模式
  • 使用putty远程连接linux
  • 使用Swoole加速Laravel(正式环境中)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 消息队列系列二(IOT中消息队列的应用)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 原生 js 实现移动端 Touch 滑动反弹
  • Java数据解析之JSON
  • 如何用纯 CSS 创作一个货车 loader
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​iOS实时查看App运行日志
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​批处理文件中的errorlevel用法
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #预处理和函数的对比以及条件编译
  • (1)(1.13) SiK无线电高级配置(五)
  • (10)ATF MMU转换表
  • (30)数组元素和与数字和的绝对差
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Java数据结构)ArrayList
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (四)图像的%2线性拉伸
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)编辑寄语:因为爱心,所以美丽
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ***详解账号泄露:全球约1亿用户已泄露
  • ./和../以及/和~之间的区别
  • .bat批处理(一):@echo off
  • .FileZilla的使用和主动模式被动模式介绍
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Standard 的管理策略
  • .Net Web项目创建比较不错的参考文章