<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理

    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/ 查看項目構建計劃

    posted on 2010-06-29 20:31 calvin 閱讀(2903) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 久久精品国产亚洲av麻豆小说 | 亚洲精品无码专区久久| 久久午夜免费鲁丝片| 精品国产日韩亚洲一区| 四虎国产精品永免费| 亚洲成年看片在线观看| 特级一级毛片免费看| 可以免费观看一级毛片黄a| 高潮内射免费看片| 成人亚洲综合天堂| 牛牛在线精品观看免费正| 亚洲成av人片在线观看天堂无码| 一级中文字幕免费乱码专区| 久久久久久A亚洲欧洲AV冫| 成全视频在线观看免费| 久久精品国产亚洲AV麻豆王友容 | 黄网站色在线视频免费观看| 亚洲一区二区三区四区视频| 在线精品免费视频无码的| 美女免费视频一区二区| 在线观看午夜亚洲一区| 99久9在线|免费| 久久亚洲精品国产亚洲老地址| 亚洲国产精品人久久| 99爱免费观看视频在线| 亚洲老熟女五十路老熟女bbw| 四虎永久在线精品视频免费观看| 国产成人无码免费网站| 亚洲国产一区国产亚洲| 免费无码黄动漫在线观看| 一区二区三区在线免费| 亚洲综合国产精品| 国产男女猛烈无遮挡免费视频网站| 成人精品综合免费视频| 亚洲色图视频在线观看| 四虎成人免费大片在线| 成全视成人免费观看在线看| 亚洲一区二区三区乱码在线欧洲| 亚洲视频在线免费| 永久免费毛片在线播放| 久久久久久国产a免费观看不卡|