zoukankan      html  css  js  c++  java
  • [CruiseControl]在Linux上的配置实例

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

     

    CruiseControl配置说明


    CruiseControl是一个持续集成工具,持续集成是一个很好的敏捷实践。在项目中搭建CruiseControl环境,通过执行频繁的项目构建,及时暴露出隐藏的Bug,从而减少定位以及修改Bug的时间和代价。本文介绍了配置CruiseControl的步骤。配置环境为Ubuntu 9.10CruiseControl 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/ 查看项目构建计划


    作者:iTech
    微信公众号: cicdops
    出处:http://itech.cnblogs.com/
    github:https://github.com/cicdops/cicdops

  • 相关阅读:
    SQLServer 日期函数大全 SQLServer 时间函数大全
    matlab练习程序(最小二乘多项式拟合)
    常用的docker命令
    【Python】keras使用LSTM拟合曲线
    【Python】keras使用Lenet5识别mnist
    【Python】pydot安装失败解决方法
    【Python】keras卷积神经网络识别mnist
    【Python】keras神经网络识别mnist
    matlab练习程序(神经网络识别mnist手写数据集)
    判断exe是64位还是32位
  • 原文地址:https://www.cnblogs.com/itech/p/1780363.html
Copyright © 2011-2022 走看看