科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[王洪伟]CruiseControl 2.6.2简介及使用举例

[王洪伟]CruiseControl 2.6.2简介及使用举例

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了CruiseControl最新发布的版本V 2.6.2的简单使用,配合CVS进行持续集成的过程。

作者:王洪伟 来源:CSDN 2007年9月28日

关键字: 王洪伟 CruiseControl 使用

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

本文使用CVSNT作为源代码管理的服务器,使用wincvs作为客户端。在继续进行之前,要确保在系统上已经安装CVSNT和winCvs 。

一、下载

CruiseControl目前最新发布的版本是 V 2.6.2 ,可以从 http://cruisecontrol.sourceforge.net 下载.

二、安装

1、目录结构

在windows下的使用的是可执行文件:CruiseControl-2.6.2.rc1.exe,安装完毕后目录下包括:

2、文件及目录的说明:

cruisecontrol.bat     启动文件;
config.xml                 配置文件  (默认的配置文件名称);
apache-ant-1.6.5    是CruiseControl自带的ant环境,CruiseControl要借助ant完成一些指定的任务;
docs                          包括CruiseControl的使用文档和一个helloworld的使用范例;
lib                              是运行需要的jar包;
logs                          日志目录,构建时产生的log存储于此;
project                      需要构建的项目所在目录,也是checkout默认的目录,所有的构建项目在project均以项目名为目录;在project目录下,有一个自带的项目connectfour,包含了src、lib、test和build.xml。
webapps                web应用目录。CruiseControl内置了jetty作为web容器,可以通过web方式查看构建结果和手动创建项目;
artifacts                    输出目录,集成后生成的jar就保存在这里。上图是刚刚安装,所以这个目录还没有。

三、第一次接触

安装完毕后,在cmd提示符下,进入cruisecontrol.bat所在目录。
执行:

> cruisecontrol

1、控制端输出信息

控制端会输出一大堆的信息,还有一些错误。不要紧,这是由于CruiseControl默认的配置是使用svn导致的。后面会对此做修改。执行完毕后,程序不会退出,处于等待状态。

2、查看文件内容变化

查看cruisecontrol 目录,会发现多出来三个文件。artifaces就是上面提过的保存构建结果的目录。
查看artifaces目录可以看到新生成的connectfour项目的内容,包括connectfour.jar 。

3、以web方式查看

打开浏览器,访问 http://127.0.0.1:8080/ 会看到CruiseControl的界面。
关闭cmd 控制台或退出CruiseControl,进行下一步。

三、配置

为了能让CruiseControl 正常工作,需要进行合理的配置。

CruiseControl(以下简称 CC) 主要有两个配置文件:
一个是config.xml,是CC初始化、调度等任务参数的配置;
一个是build.xml,ant执行的配置文件,CC借助ant完成指定的任务,如checkout、compile、jar、test等。

四、举例

 下面根据一个例子来说明使用的步骤。

1、复制docs\main下的helloworld目录到project目录下。

2、在project/helloworld目录保留src目录和cvs-build.xml文件,其他的全部删除。
注意:这些文件的原始文件还在docs\main下,以后可能你会用得着。

3、修改文件名 cvs-build.xml  为 build.xml。

4、修改build.xml文件:只需要修改property部分的内容,其他内容不变:

       A、注释掉build.compiler和build.compiler.emacs 

<!--property name="build.compiler" value="jikes"/-->
<!--property name="build.compiler.emacs" value="true"/-->

      B、修改 cvs.repository 为你的CVSNT的访问参数:

<property name="cvs.repository" value=":pserver:cvsUserName:cvsPassworld@127.0.0.1:/cvsroot "/>

     C、修改cvs.package为模块名称也就是需要构建的项目名称,这里是helloworld

<property name="cvs.package" value="helloworld"/>

    D、将dist.dir的值改为 target,这是发布目录,要求和config.xml文件中指定值保持一致。

<property name="dist.dir" value="target"/>


完整的property修改如下:

    <!--property name="build.compiler" value="jikes"/-->
    
<!--property name="build.compiler.emacs" value="true"/-->
    
<property name="build.dir" value="classes"/>
    
<property name="dist.dir" value="target"/>
    
<property name="logdir" value="logs"/>
    
<property name="source.dir" value="src"/>
    
<property name="junit.results" value="test-results"/>
    
<property name="cvs.repository" value=":pserver:cvsUserName:cvsPassworld@127.0.0.1:/cvsroot "/>
    
<property name="cvs.package" value="helloworld"/>


5、修改 config.xml

    A、修改project的name属性值为构建项目的名称 helloworld  

<project name="helloworld">

   B、将svnbootstrapper改为 cvsbootstrapper

<svnbootstrapper localWorkingCopy="projects/${project.name}" />

   C、将svn改为 cvs
<svn localWorkingCopy="projects/${project.name}"/>


   D、将 merge 属性dir的值改为 projects/${project.name}/target/test-results

<merge dir="projects/${project.name}/target/test-results"/>

修改后完整的config.xml如下:
<cruisecontrol>
    
<project name="helloworld">

        
<listeners>
            
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
        
</listeners>

        
<bootstrappers>
            
<cvsbootstrapper localWorkingCopy="projects/${project.name}" />
        
</bootstrappers>

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

        
<schedule interval="300">
            
<ant anthome="apache-ant-1.6.5" buildfile="projects/${project.name}/build.xml"/>
        
</schedule>

        
<log>
            
<merge dir="projects/${project.name}/test-results"/>
        
</log>

        
<publishers>
            
<onsuccess>
                
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
            
</onsuccess>
        
</publishers>

    
</project>
</cruisecontrol>

6、用wincvs 将project/helloworld 导入CVS中

7、将 project/helloworld 删除

8、将helloworld 从CVS中checkout 到project目录

9、将CVSROOT从CVS中checkout到project目录

10、在CVSROOT目录中创建一个文件 users 没有扩展名,文件的内容为:

# CruiseControl login mapping email configuration 
# $Id$
cvsUserName:cvsUserName@
127.0.0.1

说明一下:(这一步很重要否则无法访问cvs)
cvsUserName是在project/helloworld目录下的 build.xm文件中设置的 cvs.repository属性中值一部分,就是访问CVS的用户名。使用冒号(:)做映射,映射的值为该CVS用户名加上@符号,再加上CVS服务的ip。

然后将users文件 checkin 到 CVS服务器中。这时候,project中的CVSROOT目录已经没用了,可以删除。

11、运行 CruiseControl
没有任何错误。
在artifacts目录可以看到helloworld项目和以生成时间命名的目录,目录内是项目的输出jar 。
相应的project/helloworld和logs/helloworld也生成对应的文件和测试目录等,不再细述。

12、通过 web方式查看
通过浏览器访问 http://127.0.0.1:8080 会看到CC的首页面,如下图:

图上说明了项目构建的时间、是否成功和构建的标号。还可以通过手动点击Build按钮除法CC立即执行构建任务。否则CC会等待下一次构建时间(在config.xml中,schedule的属性interval的值以秒为单位设定构建执行的间隔时间,默认为5分钟)
点击 helloworld 可以查看项目构建细节。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章