使用maven,svn和CruiseControl做持续集成

本文介绍了如何使用CruiseControl结合Maven实现项目的持续集成。内容涵盖配置要点,如利用SVN进行配置文件同步、修改监控设置及定时调度等,并分享了一些实践心得。

一.背景

1.1. 大背景

持续集成,公司需要,项目也需要.

1.2.小背景

代码存储在svn库上,并且每天都有改动.

项目使用maven来做打包构建.先前做cruisecontrol时虽然解决了以ant,svn方式做持续构建的代码更新与构建问题,但在已有项目中,没有ant可用的build.xml,且整个项目实际上由多个小项目组成.使用ant来做build的话,不方便.

1.3.cruisecontrol介绍

略,先前已有介绍.

二.如何做

2.1.前提条件

1.安装了maven且maven做build所需的仓库已有.

2.安装了svn客户端,且svn的环境信息已加入到了系统path路径中

ant中,可以使用svnant来做svn代码更新,这只是3个jar就能解决,但使用maven做build时,暂时无法使用ant脚本.因此必须安装svn客户端.

在cruisecontrol调用maven做版本构建前,先要从svn同步代码下来,如果本地没有svn客户端,或者没找到,则代码同步无法进行,版本构建会出错.

在做完svn的配置后,去控制台,输入svn,在确认能认出这个svn程序后,再做后面的操作.

3.确保自己有一个svn账号,并且获知了要做版本构建的目录(即project的目录)

2.2 cruisecontrol的配置

本质上就是去在cruisecontrol的config.xml文件中添加相应的项目构建配置信息.此处只列出关键配置点.

2.2.1 项目build之前做配置文件同步

bootstrappers用来在项目build之前做主要配置文件的更新,如build.xml,build.propertis,pox.xml.在bootstrappers底下添加svnbootstrapper来告诉cruisecontrol主要配置文件使用svn来做更新.其中localWorkingCopy用来指明本地的主要配置文件的目录,不过为了更保险起见,可以用file来代替,file是用来指明主要配置文件是哪个文件.

 

<bootstrappers>

    <svnbootstrapper localWorkingCopy="${checkout_dir}" username="${svn_user}" 

      password="${svn_passwd}"/>

</bootstrappers>

类似${checkout_dir}这样的值是先前定义的变量值.可以使用这种方式在先前定义变量值,这样比较易于维护.

2.2.2 modificationset的配置

modificationset用来指定要监控哪些文件会更改(默认情况下,如果第二次build开始,cruisecontrol发现要build的文件集没有改动,则会跳过build过程,直接完成本次build)

 

<modificationset quietperiod="30">

     <svn localWorkingCopy="${checkout_dir}" username="${svn_user}" password="${svn_passwd}"/>

</modificationset>

上面的配置项告诉cruisecontrol,本地文件在localWorkingCopy目录下,是否有变动,可以通过svn去检查.

2.2.3 定时调度

白天编译和打包的服务器大家很多人和程序在用,压力较大;而晚上大家下班后压力很小,做定时编译打包是个好时机.

在cruisecontrol中设置定时调度,是通过在schedule节点下添加pause节点来实现的.

最后举一个例子:

 

<schedule interval="60">

    <maven2 mvnhome="${M2_HOME}" pomfile="${pomfile}" goal="clean package site" />

    <pause starttime="0600" endtime="2300" />

</schedule>

这个例子表示在6点至23点这段时间,暂停当前的调度任务,这个时间段内,不会有build任务执行.

可以给一个schedule底下添加多个pause,即可以设置多个不做build的时间段.

2.2.4 邮件告警配置

略,先前已有介绍.

三.一些体会

1.cruisecontrol只是起到了一个定时调度功能,要编译打包还是要靠maven,因此,为了保证能通过编译和打包,maven相关的配置一定要做好.

2.cruisecontrol每次启动前会检测要build的项目,在项目的循环调度周期的时间之后才开始执行调度,而非一启动就开始调度.因此做定时调度时,这一点要注意到

3.cruisecontrol在下次调度时候会检查config.xml是否有变动,因此添加进一个新的project来做持续集成时,没必要将cruisecontrol停止.

四.附件

config.xml的一个例子

使用maven,svn和CruiseControl做持续集成

标题基于Python的汽车之家网站舆情分析系统研究AI更换标题第1章引言阐述汽车之家网站舆情分析的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义说明汽车之家网站舆情分析对汽车行业及消费者的重要性。1.2国内外研究现状概述国内外在汽车舆情分析领域的研究进展与成果。1.3论文方法及创新点介绍本文采用的研究方法及相较于前人的创新之处。第2章相关理论总结评述舆情分析、Python编程及网络爬虫相关理论。2.1舆情分析理论阐述舆情分析的基本概念、流程及关键技术。2.2Python编程基础介绍Python语言特点及其在数据分析中的应用。2.3网络爬虫技术说明网络爬虫的原理及在舆情数据收集中的应用。第3章系统设计详细描述基于Python的汽车之家网站舆情分析系统的设计方案。3.1系统架构设计给出系统的整体架构,包括数据收集、处理、分析及展示模块。3.2数据收集模块设计介绍如何利用网络爬虫技术收集汽车之家网站的舆情数据。3.3数据处理与分析模块设计阐述数据处理流程及舆情分析算法的选择与实现。第4章系统实现与测试介绍系统的实现过程及测试方法,确保系统稳定可靠。4.1系统实现环境列出系统实现所需的软件、硬件环境及开发工具。4.2系统实现过程详细描述系统各模块的实现步骤及代码实现细节。4.3系统测试方法介绍系统测试的方法、测试用例及测试结果分析。第5章研究结果与分析呈现系统运行结果,分析舆情数据,提出见解。5.1舆情数据可视化展示通过图表等形式展示舆情数据的分布、趋势等特征。5.2舆情分析结果解读对舆情分析结果进行解读,提出对汽车行业的见解。5.3对比方法分析将本系统与其他舆情分析系统进行对比,分析优劣。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括本文的主要研究成果及对汽车之家网站舆情分析的贡献。6.2展望指出系统存在的不足及未来改进方向,展望舆情
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值