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

简介:

最近抽空继续整理先前的文档,呵呵.两年多工作中学习到的东西还是蛮多的哦.

一.背景

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}这样的值是先前定义的变量值.可以使用<property name="checkout_dir" value="projects/datamatrix-1.0.0-dev4/${project.name}"/>这种方式在先前定义变量值,这样比较易于维护.

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的一个例子

无标题



本文转自leipei博客园博客,原文链接:http://www.cnblogs.com/leipei2352/archive/2012/04/03/2430639.html,如需转载请自行联系原作者

目录
相关文章
|
Java Maven
Javaweb之 IDEA集成Maven的详细解析(2)
3、填写模块名称,坐标信息,点击finish,创建完成
181 4
|
Java Maven Android开发
maven篇3:IDEA中集成maven
maven篇3:IDEA中集成maven
167 0
maven篇3:IDEA中集成maven
|
6月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
200 0
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
8月前
|
Java jenkins 持续交付
Jenkins集成Maven
通过以上步骤,可以在Jenkins中成功集成Maven,实现自动化构建和部署。通过定时构建、SCM轮询等方式,可以确保代码库中的最新变更能够及时构建和测试,提高开发效率和代码质量。这种集成方式在实际项目中具有广泛的应用前景,能够显著提升团队的协作效率。
207 8
|
Java Maven
Javaweb之 IDEA集成Maven的详细解析(1)
03. IDEA集成Maven 我们要想在IDEA中使用Maven进行项目构建,就需要在IDEA中集成Maven 3.1 配置Maven环境 3.1.1 当前工程设置 1、选择 IDEA中 File => Settings => Build,Execution,Deployment => Build Tools => Maven
312 3
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
338 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
Java jenkins Shell
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
|
IDE Java 项目管理
【Maven】Maven的新建、使用、安装配置、集成配置到eclipse,Maven项目测试servlet,Maven容易出现的问题
Maven是一个流行的构建工具和项目管理工具,它能够自动处理项目的编译、依赖管理和构建部署等任务。通过使用Maven,开发人员可以更轻松地管理和构建Java项目,而不必手动解决复杂的依赖关系。Maven是一个Java项目管理工具,它提供了一种结构化的方法来管理项目的构建、依赖、文档和发布等方面的工作。它基于项目对象模型(Project Object Model,POM)的概念,通过配置文件来定义项目的构建和行为。Maven将项目的构建过程自动化,并提供了许多插件和功能来简化开发人员的工作。
|
Java Maven
IDEA 集成Maven
IDEA 集成Maven
157 0

推荐镜像

更多