Chinaunix首页 | 论坛 | 博客
  • 博客访问: 843889
  • 博文数量: 63
  • 博客积分: 1317
  • 博客等级: 中尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-30 22:07
文章分类

全部博文(63)

文章存档

2015年(4)

2014年(1)

2013年(1)

2012年(2)

2011年(54)

2010年(1)

我的朋友

分类: 项目管理

2011-03-03 16:23:50

 CruiseControl是一个持续集成工具,持续集成是一个很好的敏捷实践。在项目中搭建CruiseControl环境,通过执行频繁的项目构建,及时暴露出隐藏的Bug,从而减少定位以及修改Bug的时间和代价。本文介绍了根据参考文档配置CruiseControl的过程。

 配置环境为RHEL5.4CruiseControl 2.8.3 Binary,版本管理工具为SVN

参考文档:http://www.blogjava.net/lihao336/archive/2010/06/29/324822.html

一.准备工作

1.配置Java环境

>vi  $HOME/.bash_profile

在文件末尾添加Java环境变量:

#set java environment

export JAVA_HOME=/usr/java/jdk1.5.0_22

export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin

export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH

>source .bash_profile

2.解压CruiseControl

解压CruiseControl-2.8.3-bin.zip

其中三个值得注意的目录是:

目录         内容

projects        存放CruiseControl从源代码仓库中检出的代码。

logs             存放构建报告和日志。

artifacts        存放构建成功后产生的输出文件(如jar包,apk包等)。

3.SVN仓库中checkout出源码

CruiseControl第一次不支持自动检出代码,所以在构建项目之前要先把项目代码手工checkout到本地。说明一下,最好以项目(project)为单位检出,不然在配置config文件时不太好标注build文件的位置。本文假设项目(project)名为sampleprojectSVN源代码仓库位于/repositoryserver/svnrepository中。

 project目录下新建sampleproject文件夹,用来存放准备build的工程。

> mkdir sampleproject

> svn checkout sampleproject

二.配置config.xml

cruisecontrol根据config.xml中配置的项目信息执行构建。

       

   

       

       

           

       

       

       

           

       

       

               

               repositoryLocation=""

                username="test" password="test" />

               

       

           

       

       

           

       

       

       

           

               

               

                    dest="artifacts/${project.name}" />

            

              

                            returnaddress="builderserver@126.com"  

                            skipusers="true"  

                            subjectprefix="[admin.Build.Server]"   

                            buildresultsurl=""  

                            username="builderserver@126.com"  

                            password="password"  

                            charset="UTF-8">

                            

                           

           

       

   

.配置cruisecontrol.sh

cruisecontrol.shcruisecontrol的启动脚本,通过这个脚本中初始化一些环境变量,开始执行build loop,并开启jetty服务器。

打开cruisecontrol.sh,在文件末尾找到

$JAVA_HOME/bin/java $CC_OPTS -Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Dcc.library.dir=$LIBDIR" "-Djetty.logs=$JETTY_LOGS" -jar "$LAUNCHER" $@ -jmxport 8000 -webport 8080 -rmiport 1099 &

去掉 & 符号,这样启动cruisecontrol时,阻止将其放到后台执行,要关闭cruisecontrol时,按下 Ctrl+C 即可。

修改-jmxport-webport-rmiport等参数可以自定义项目构建结果的发布端口。

PS:

如果项目的log文件比较大,或者构建时使用内存较多,可以在cruisecontrol.sh中增加JAVA命令行参数,扩大JVM的内存,以免出现OutOfMemory错误:

CC_OPTS="-Xms128m -Xmx256m"

.配置dashboard-config.xml

dashboard用来显示cruisecontrol管理的所有项目的构建状态信息。

dashboard-config.xml用来配置dashboard的显示,其中,配置,那么在每个项目的右侧有一个按钮,单击该按钮将强迫该项目进行构建,而不必等到其下一次检查,也不必等到它有版本变化。

 

 

   logsdir=""

          artifactsdir="" />

 

  

 

.运行cruisecontrol

1.cruisecontrol.sh 添加执行权限

> chmod +x cruisecontrol.sh

2.运行 cruisecontrol.sh 脚本

> ./cruisecontrol.sh

.查看项目构建结果

1.通过 访问项目构建结果。

其中,项目有三种状态:

Discontinued:表示CruiseControl可以找到该项目的日志文件,但在config.xml中并没有配置该项目,这种情况下CruiseControl不会去构建它。

Inactive:表示在config.xml中配置了该项目,但是没有发现关于这个项目的Log信息,即在CruiseControl的日志目录中还没有该项目的日志文件,或日志文件被人为删除了。CruiseControl会根据配置信息对这个项目进行检查新版本并进行构建。

Active:表示CruiseControl即可以找到该项目的日志文件,又在config.xml中可以发现它。此时,这个项目可能是构建成功,也可能是构建失败,还可能是构建中。

2.通过 查看项目构建计划

阅读(3687) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~