`

CruiseControl简介及使用举例

阅读更多
CruiseControl简介及使用举例 本文使用CVSNT作为源代码管理的服务器,使用wincvs作为客户端。在继续进行之前,要确保在系统上已经安装CVSNTwinCvs  一、下载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,包含了srclibtestbuild.xml

webapps                web
应用目录。CruiseControl内置了jetty作为web容器,可以通过web方式查看构建结果和手动创建项目;
artifacts                   
输出目录,集成后生成的jar就保存在这里。上图是刚刚安装,所以这个目录还没有。三、第一次接触安装完毕后,在cmd提示符下,进入cruisecontrol.bat所在目录。
执行:> cruisecontrol1、控制端输出信息

控制端会输出一大堆的信息,还有一些错误。不要紧,这是由于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.xmlant执行的配置文件,CC借助ant完成指定的任务,如checkoutcompilejartest等。四、举例 下面根据一个例子来说明使用的步骤。1、复制docs/main下的helloworld目录到project目录下。

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

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

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

       A
、注释掉build.compilerbuild.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 "/>*注意此处的”cvsroot ”为你在CVS服务器中所建立的服务名     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 "/> <!--*注意此处的”cvsroot ”为你在CVS服务器中所建立的服务名-->
    
<property name="cvs.package" value="helloworld"/>5、修改 config.xml    A、修改projectname属性值为构建项目的名称 helloworld  <project name="helloworld">
   B
、将svnbootstrapper改为 cvsbootstrapper<svnbootstrapper localWorkingCopy="projects/$" />
   C
、将svn改为 cvs <svn localWorkingCopy="projects/$"/>
   D
、将 merge 属性dir的值改为 projects/$/target/test-results<merge dir="projects/$/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="5">            <cvs localWorkingCopy="projects/${project.name}"/>        </modificationset>         <schedule interval="300">            <ant anthome="apache-ant-1.7.0" 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(即你在CVS服务器中所建的仓库)7、将 project/helloworld 删除8、将helloworld CVS(即你在CVS服务器中所建的仓库)checkout project目录9、将CVSROOTCVS(即你在CVS服务器中所建的仓库)checkoutproject目录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/helloworldlogs/helloworld也生成对应的文件和测试目录等,不再细述。12、通过 web方式查看
通过浏览器访问 http://127.0.0.1:8080 会看到CC的首页面,如下图:图上说明了项目构建的时间、是否成功和构建的标号。还可以通过手动点击Build按钮除法CC立即执行构建任务。否则CC会等待下一次构建时间(config.xml,schedule的属性interval的值以秒为单位设定构建执行的间隔时间,默认为5分钟)
点击 helloworld 可以查看项目构建细节。 二查看结果1、左侧菜单(下图)
可以切换到其他项目和项目列表,显示当前项目构建的历史记录。2、构建结果(下图)
显示单元测试的是否通过情况,被修改的文件列表等,连接到构建结果jar的下载页面。3、单元测试情况(下图)
查看详细的测试类和测试方法、测试结果。4、统计图表(下图)5、控制面板(下图)
五、持续构建以上这些就是持续构建的全部吗?不!1、修改 projects/helloworld/src/hello下的HelloWorld.java文件,比如加一个空格。2、将HelloWorld.java 的变化提交到CVS服务器。3、等5分钟...5分钟一到,CC会自动从CVS服务器上检测到文件的变化,然后checkoutproject/helloworld目录下进行构建:包括编译、测试、打包、发布等。CC解决对于那些开发模式是项目一开始就划分模块,然后等所有的代码都开发完成之后再集成到一起进行测试,到最后集成的时候才发现问题,开发者需要在集成阶段花费大量的时间来寻找 bug 的根源,加上软件的复杂性,问题的根源很难定位,甚至出现不得不调整底层架构的情况。 
分享到:
评论

相关推荐

    CruiseControl使用指南.rar

    5. **CruiseControl简介及使用举例**:风之影在JavaEye上的文章可能对CruiseControl进行了简要介绍,并通过实例展示了CruiseControl的关键功能,如版本控制集成、构建触发器和构建报告。 6. **向CruiseControl中...

    cruisecontrol简介

    cruisecontrol简介

    cruisecontrol配置定时运行

    如果你想让CruiseControl每天特定时间运行,可以考虑使用ScheduledTrigger,并配合`cron`表达式。 **3. 构建步骤** 在`cruisecontrol.xml`中,还需要定义构建过程,这包括编译、测试、打包等步骤。例如,如果你的...

    [CruiseControl]binary安装和启动

    #### 一、CruiseControl简介 CruiseControl 是一个持续集成工具,用于自动化构建过程并提供实时反馈,帮助开发团队尽早发现问题。它支持多种构建工具如 Ant 和 Maven,并且可以与各种版本控制系统(如 CVS, ...

    持续集成及CruiseControl技术交流

    主题:持续集成及CruiseControl技术交流 在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),...

    cruisecontrol配置文件.rar

    CruiseControl 是一个开源的持续集成工具,用于自动化软件构建、测试和部署的过程。它通过监控版本控制系统中的变更,自动触发构建任务,及时发现并解决代码集成中的问题,从而提高开发团队的效率和软件质量。本...

    持续集成之CruiseControl.rb

    **持续集成之CruiseControl.rb** CruiseControl.rb是一款开源的持续集成工具,主要用于自动化构建、测试和部署软件项目。它是由ThoughtWorks公司开发的,是CruiseControl.NET的Ruby版本,因此在Ruby社区中被广泛...

    cruisecontrol+maven2配置

    标题与描述概述的知识点主要涉及了使用CruiseControl与Maven2进行持续集成的配置流程。这是一项在软件开发过程中非常关键的技术实践,它能够自动检测代码库中的更新,并自动执行构建、测试以及部署等任务,从而确保...

    cruisecontrol、ant、svn持续集成

    本文将重点介绍如何使用CruiseControl、Ant、Subversion(SVN)等工具搭建一个持续集成环境的过程。 #### 二、所需工具与环境 - **CruiseControl**: 一种持续集成框架,支持自动化构建、测试和部署。 - **Apache ...

    CruiseControl使用总结

    **CruiseControl 使用总结** CruiseControl 是一个开源的持续集成工具,主要用于自动化软件构建、测试和部署过程。它的核心理念是通过频繁地构建项目,及时发现并解决代码中的问题,从而提高软件开发效率和质量。这...

    CruiseControl.NET

    CruiseControl.NET 是 .NET 平台下的持续集成工具,CruiseControl (Java) 的 .NET 移植版本。CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。Cruise...

    利用CruiseControl软件进行持续集成

    "利用CruiseControl软件进行持续集成" 在软件开发过程中,持续集成是一个非常重要的...CruiseControl的自动构建是使用ANT工具来进行的,当然我们也可以使用其它的自动构建工具来替代(比如Maven),这些工具仅供选择。

Global site tag (gtag.js) - Google Analytics