CruiseControl在Linux上的配置

转自:http://www.blogjava.net/lihao336/archive/2010/06/29/324822.html

 CruiseControl配置说明

CruiseControl是一个持续集成工具,持续集成是一个很好的敏捷实践。在项目中搭建 CruiseControl环境,通过执行频繁的项目构建,及时暴露出隐藏的 Bug,从而减少定位以及修改 Bug的时间和代价。本文介绍了配置 CruiseControl的步骤。配置环境为 Ubuntu 9.10 CruiseControl 2.8.3 Binary,版本管理工具为 SVN

一.准备工作

1.配置Java环境

calvin@calvin-desktop:~$ sudo gedit /etc/profile

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

#set java environment

export JAVA_HOME=/home/calvin/development/jdk

export JRE_HOME=/home/calvin/development/jdk/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

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

登出再登入生效。


2.解压CruiseControl

解压到CruiseControl-2.8.3-bin.zip /home/calvin/development/cruisecontrol/cruisecontrol-bin-2.8.3中,其中三个值得注意的目录是:

目录         内容

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

logs             存放构建报告和日志。

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


3.SVN仓库中checkout出源码

CruiseControl第一次不支持自动检出代码,所以在构建项目之前要先把项目代码手工checkout到本地。本文假设项目名为sampleprojectSVN源代码仓库位于/home/calvin/development/cruisecontrol/DemoSystem/repositoryserver/svnrepository中。

  • 安装subversion客户端

calvin@calvin-desktop:~$ sudo apt-get install subversion


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

calvin@calvin-desktop:~/development/cruisecontrol/cruisecontrol-bin-2.8.3/projects$ mkdir sampleproject

calvin@calvin-desktop:~/development/cruisecontrol/cruisecontrol-bin-2.8.3/projects$ svn checkout file:home/calvin/development/cruisecontrol/DemoSystem/repositoryserver/svnrepository sampleproject


二.配置config.xml

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

复制代码
< cruisecontrol >
    
<!--  这里的name应该和projects目录下的项目名一致  -->
    
< project  name ="sampleproject" >
        
<!-- 监听项目状态的变化  -->
        
< listeners >  
            
< currentbuildstatuslistener  file ="logs/${project.name}/status.txt" />
        
</ listeners >

        
<!--  build之前从svn服务器上更新本地代码  -->
        
< bootstrappers >
            
< svnbootstrapper  localWorkingCopy ="projects/${project.name}/trunk"   />
        
</ bootstrappers >

        
< modificationset  quietperiod ="30" >
            
< svn  localWorkingCopy ="projects/${project.name}/trunk"   />
        
</ modificationset >

        
<!--  设定每隔interval秒,CruiseControl去检查并执行一次构建  -->
        
< schedule  interval ="60" >
            
< ant  anthome ="apache-ant-1.7.0"  buildfile ="projects/${project.name}/trunk/build.xml"  target ="all" />
        
</ schedule >

        
<!--  发布构建结果  -->
        
< publishers >
            
< onsuccess >
                
<!--  将构建的结果(如jar包,apk包等)发布到指定的位置  -->
                
< artifactspublisher  dir ="projects/${project.name}/trunk/dist"
                    dest
="../logs/SampleCCProject"   />
            
</ onsuccess >

            
<!-- htmlemail buildresultsurl="http://211.94.155.199:8080/cruisecontrol/buildresults/mobiletv  mailhost="localhost" returnname="CruiseControl result" returnaddress="localhost@localhost" -->
                
<!-- failure address="caojie@cienet.com.cn" />
                <success address="${mail.address.mobiletv" />
            </htmlemail>

            <htmlemail>
                <success address="${mail.address.mobiletv}"/>
                <failure address="caojie@cienet.com.cn"/>
            </htmlemail>
-->             

            
< email  mailhost ="smtp.263xmail.com"
                   returnaddress
="calvinlee@cienet.com.cn"
                   skipusers
="true"
                  reportsuccess
="fixes"
                  subjectprefix
="[CruiseControl]"
                  buildresultsurl
="http://buildserver:8080/cruisecontrol/buildresults" >
                  
< failure  address ="calvinlee@cienet.com.cn"   />
                  
< success  address ="calvinlee@cienet.com.cn"   />
            
</ email >
        
</ publishers >
    
</ project >
</ cruisecontrol >
复制代码

 

 .配置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的显示,其中,配置<features allowforcebuild="true"/>,那么在每个项目的右侧有一个按钮,单击该按钮将强迫该项目进行构建,而不必等到其下一次检查,也不必等到它有版本变化。

 

复制代码
  < dashboard >
  
< buildloop    logsdir =""  artifactsdir =""   />
  < features  allowforcebuild ="true" />
  < trackingtool  projectname =""  baseurl =""  keywords ="" />
  
< subtabs >
   
< subtab  class ="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget"   />
  </ subtabs >
 
</ dashboard >
复制代码

 

.运行cruisecontrol

1.cruisecontrol.sh 添加执行权限

calvin@calvin-desktop:~/development/cruisecontrol/cruisecontrol-bin-2.8.3$ sudo chmod +x cruisecontrol.sh

2.运行 cruisecontrol.sh 脚本

calvin@calvin-desktop:~/development/cruisecontrol/cruisecontrol-bin-2.8.3$ ./cruisecontrol.sh


.查看项目构建结果

1.通过http://localhost:8080/dashboard/ 访问项目构建结果。

其中,项目有三种状态:

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

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

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

2.通过http://localhost:8080/cruisecontrol/ 查看项目构建计划

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值