快速上手持续集成工具——Cruisecontrol

红薯 发布于 2010/01/02 22:28
阅读 4K+
收藏 3

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

    1        Cruisecontrol的概述
        CruiseControl是一种持续集成过程的框架,包括了邮件通知,ant和各种源码控制工具的插件。并提供web接口,用于查看当前和以前的 build的结果。

    2       Cruisecontrol的安装
    2.1       下载CruiseControl
        CruiseControl目前提供的是源码,需要我们手工进行创建。网址:http://prdownloads.sourceforge.net/cruisecontrol/cruisecontrol-2.2.zip?download

    2.2       创建安装目录

        把CruiseControl源码拷贝到特定目录该目录为INSTALL_DIR,该目录下有三个子目录docs,main,reporting(注意: 在main/docs/helloworld下有一个例子,我 们可以参考。)

    2.3       设置环境变量

        将INSTALL_DIR\main\bin添加到系统的环境变量PATH中去。

    2.4       创建工作目录

        创建工作目录为D:\CC-WORKSPACE,下面称之为WORK_DIR

    WORK_DIR\logs          CC的build loop过程中产生日志所在目录
    WORK_DIR\artifacts     CC在build loop过程中产生需要保存的一些

    文件所在目录          

    这步不是官方文挡要求的,但构建良好的目录结构对于开发和配置都非常重要。

    3       Cruisecontrol的配置
    3.1   reporting部分的配置
        reporting部分的配置分三个步骤,修改jsp,创建override.properties,打包reporting部分文件并在 weblogic上部署。

    3.1.1
  
    修改
    jsp
    文件
 
    修改INSTALL_DIR\reporting\jsp\buildresults.jsp文件,将

    <%@ taglib uri="/WEB-INF/cruisecontrol-jsp11.tld" prefix="cruisecontrol"%>

    修改为

    <%@ taglib uri="/WEB-INF/cruisecontrol-jsp12.tld" prefix="cruisecontrol"%>

    3.1.2
  
    创建
    override.properties
    在INSTALL_DIR\reporting\jsp 目录下创建override.properties文件,

    内容如下:

    user.log.dir=D:\\CC-WORKSPACE\\logs

    user.build.status.file=status.txt

    cruise.build.artifacts.dir=D:\\CC-WORKSPACE\\artifacts

    3.1.3
  
    打包
    web
    文件
 
    执行INSTALL_DIR\reporting\jsp目录下的build.bat文件,执行成功后在dist目录下找到 cruisecontrol.war文件,并将该文件部署到weblogic上,Weblogic部署部分我就不写了。

    3.2   Mian部分配置

    Mian部分配置只有一步,就是创建config.xml文件。

    在工作目录(work_dir)下创建两个文件congfig.xml和startcc.bat文件,config.xml文件是必须的,startcc 文件是可选,因为startcc.bat纯粹是为了启动cc方便而创建的文件。

    Startcc.bat文件内容如下:

    cruisecontrol -port 8000

    很短,但使用起来很方便,双击一下就启动cc 了。;-)
    config.xml是由cc规定一些xml标签组成,我对一些常用的标签说明一下,具体还要去看cc提供的官方文档 (INSTALL_DIR/doc)。

<project/> 定义一个项目

        <bootstrappers>

     <currentbuildstatusbootstrapper file="logs\first\status.txt" />

</bootstrappers>

 定 义build状态的日志文件。

        <modificationset requiremodification="false"  quietperiod="60" >

      <vss ssdir="D:\vss\win32"             //注意:ssdir中不能有空格

         login="fengtianhao,fengtianhao"     //用户明,密码

          vsspath="/devtest"                //项目路径

          serverPath="D:\Program Files\vss"  //就是包含srcsafe.ini的目录

         dateformat="yy-MM-dd"         //vss的日期格式

         timeformat="HH:mm"           //vss的时间格式

         />

           </modificationset>

           检查vss文件系统是否有变化,如果有,则在web页面显示变化过的文件名。

         <schedule interval="60" >

定义build时间间隔为60秒

<ant buildfile="build.xml" antscript="D:\ant\bin\ant.bat" target="deploy.app" time="1916"  antworkingdir="D:\new97_prj\NEW97_PRJ" uselogger="false">

      <jvmarg arg="-server" />

      <jvmarg arg="-Xms64m" />

       <jvmarg arg="-Xmx256m" />

</ant>

        指定ant 的相关信息。buildfile定义build所需要的build.xml文件,antscript指定ant的启动脚本,antworkingdir指 定ant的工作 ,target指定本次的build的目标,time指定build目标的运行时间(time也可以换成multiple,两者只能取其 一)。<jvmarg>指定cc运行时的最大和最小内存

      </schedule>

        <log dir="logs\first">

       <merge dir="jsp\target\testresults"/>

    </log>

        log标签的dir属性指定日志目录。merge标签的dir属性指定需要被合并文件的路径,指定路径下的文件将会与日志文件合并,一般需要合并的文件是 测试结果文件,这需要注意的地方是指定路径下的文件都要被合并到日志文件中,也就是说,为了不影响cc的日志文件的准确性,在生成每次的测试结果之前需要 先把上次的测试结果删除。

       <publishers>

      <artifactspublisher dest="artifacts\first" dir="jsp\target\testresults"/>

     </publishers>

        publishers的功能主要是发布build结果,例如邮件通知等,我们主要用到的功能是artifactspublisher所定义的功能,也就是 cc在build过程中产生的文件发布。在merge标签中我们已经知道,测试日志是cc在build过程中产生的文件,而且我们每次我们都要删除上次的 测试结果,这里cc提供了一种机制让你保存测试结果,就是利用artifactspublisher标签。

        Dest定义目标目录,dir定义文件存储的起始目录。所有的文件会被cc从dir目录copy到 dest目录。被copy到dest目录的文件会放在以当前时间命名的文件夹中。这里dir定义的是测试日志文件的所在目录。

加载中
0
万事通
万事通

  非常好,我公司用得就是这款持续集成工具!

0
p
perl

引用来自“万事通”的答案

  非常好,我公司用得就是这款持续集成工具!

你好,这款持续集成工具应该不支持linux下的gcc编译吧,bamboo这款持续集成工具大家有没有用过啊?

http://www.fangwai.net/software/bamboo/default.htm

0
文浩
文浩

我觉得CC的配置比较麻烦,如果不进行二次开发,基本上很难使用。

我的想法:

1.开发一套基于ant脚本的插件,插件包括:代码统计,静态检测pclint/simian/sourcemonitor,代码编译compile(编译直接使用exec掉本地的编译器来处理),单元测试junit/gtest,内存检测valgrind/purify/drmemery,覆盖率测试purecoverage/lcov/cobertura)这些功能都单独使用ant来编写。比如下面这样:

2.在配置CC的config.xml文件的时候就copy一份这个文件到你工程的script目录,然后修改里面的参数值,重新把文件取一个名字,比如叫stage1_unittest_gtest_T_20120905.xml,然后再把这个文件配置到config.xml的ant节点里面。

这样客户使用起来就很简单了,如果你的插件在加一个使用说明书就更完美了。

0
文浩
文浩

引用来自“perl”的答案

引用来自“万事通”的答案

  非常好,我公司用得就是这款持续集成工具!

你好,这款持续集成工具应该不支持linux下的gcc编译吧,bamboo这款持续集成工具大家有没有用过啊?

http://www.fangwai.net/software/bamboo/default.htm

代码编译compile(编译直接使用exec掉本地的编译器来处理),

并且你还可以使用java编译ant的扩张,使用正则表达式来分析你的编译日志,输出成xml文件,然后使用xsl来样式化得编译报告,使用ie打开那效果肯定是完美的。

返回顶部
顶部