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

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

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

    posts - 56, comments - 77, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    /*************************/

    "擁抱變化" 是敏捷的態(tài)度之一, CruiseControl 正是來實證這種態(tài)度的作品. 多種類型的"變化"都會觸發(fā)CruiseControl的一次構(gòu)建過程.

    我們知道CruiseControl能根據(jù)源代碼的變化來調(diào)度一次構(gòu)建, 但你知道CruiseControl支持多少種調(diào)度模式嗎?

    ---切爾斯基

    /*************************/


    1. 基于 "源代碼變化" 的調(diào)度 ( 3 種)

    這是 CruiseControl 最經(jīng)典的調(diào)度模式, 可以參見 <modificationset>

    • 一個小擴展, 基于 "部分源代碼變化" 的調(diào)度, 參見<modificationset>的 "ignoreFiles" 屬性

    • 一個小擴展, "不需要任何源代碼變化" 的調(diào)度, 參見<modificationset>的 "requiremodification" 屬性(Deprecated), 和


    2. 基于 "時間變化" 的調(diào)度 ( 6 種)

    這是另外一種常用的調(diào)度模式, 通常用于 Nightly Build. 但是 CruiseControl 并沒有從架構(gòu)級別上支持這種調(diào)度, 基于時間的調(diào)度被分散到各個插件中, 得自己去看文檔尋找

    以常用的幾種插件為例, 我們來看看CruiseControl支持的幾種基于 "時間變化" 的調(diào)度模式

    2.1 一天之內(nèi)的調(diào)度

    <schedule>

        <ant .../>

        <pause starttime="0200" endtime="0600"/>

    </schedule>

    • 每天的某個時間段之內(nèi)的時間來構(gòu)建, 參見<pause>插件, 如每天的凌晨2點至6點之間構(gòu)建:

    <schedule>

        <ant .../>

        <pause starttime="0000" endtime="0200"/>

        <pause starttime="0600" endtime="2359"/>

    </schedule>

    從這里我們可以看出CruiseControl缺少對 <not> 的支持

    2.2 一周之內(nèi)的調(diào)度

    • 一周內(nèi)的每天都調(diào)度, 這是<ant>, <pause>等的缺省行為

    • 每周的某一天來構(gòu)建或不構(gòu)建, 參見<ant>, <

    這樣就有總共 3*2=6 種基于時間的調(diào)度


    3. 基于 "依賴變化" 的調(diào)度 ( 6 種)

    通常我們會將大的項目分成多個小項目來組織構(gòu)建, 這些小項目之間有依賴關(guān)系, 某個項目要等待另外一個成功之后再構(gòu)建才有意義, 比如說要用到其它project的構(gòu)建產(chǎn)物來作為輸入, 我們將這種情況稱之為Build Pipeline

    CruiseControl并沒有對項目之間的依賴, 或曰Build Pipeline提供顯式建模或支持, 只是有一些插件來局部支持

    /*************************/

    由于 <modificationset> 可以包含多個插件, 并且缺省是 OR 的關(guān)系, 所以你基本上可以正交的應(yīng)用前面提到的所有調(diào)度模式, 這樣你就能得到 3 * 6 * 6 = 108 種調(diào)度模式

    下面描述兩種令上述模式都失效的調(diào)度模式

    /*************************/


    4. 基于 "強制命令" 的調(diào)度

    • 固定時間間隔的構(gòu)建, 不管有沒有源代碼變化, 一種方式是前面提到的<alwaysbuild>插件

    • 按需構(gòu)建, 只有你通過UI或JMX顯式的來觸發(fā)構(gòu)建的時候才構(gòu)建, 一種方式是<forceonly>插件

    /*************************/

    在使用CruiseControl的過程中, 通常會遇到某些構(gòu)建比較耗時, 或者檢查整個源代碼倉庫的時間過長等情況. 對此 CruiseControl 提供了一些優(yōu)化措施

    /*************************/


    5. 優(yōu)化調(diào)度

    • 每運行另外的構(gòu)建一定次數(shù), 才運行一次本構(gòu)建, 通常用于調(diào)度耗時較長的如 Clean Build 等, 參見

    <schedule interval="60">
        <ant target="masterbuild" />
        <ant target="cleanbuild" multiple="5"/>
    </schedule>

    <modificationset>
        <cvs localworkingcopy="/home/project">
        <timebuild username="you_guys_are_not_agile" time="2300"/>
    </modificationset>

    • 先進行耗時耗資源少的檢查, 有變化后再全面檢查取得所有變化, 參見<compound>插件

    • 同時運行多個構(gòu)建, 參見<threads>插件

    缺少的那一塊

    • CruiseControl用<ant>等Builder來做

    • CruiseControl缺乏對project之間依賴關(guān)系, 或Build Pipeline的支持

    • CruiseControl的插件容器基本上是 OR 的關(guān)系, 缺乏對邏輯關(guān)系的顯式建模, 應(yīng)該提供 AND, NOT 等關(guān)系, 這樣我們就能組合應(yīng)用已有的插件. CruiseControl的現(xiàn)狀是分別提供了<compound>, <composite>, <compoundpublisher>等插件

    • CruiseControl已經(jīng)提供了

    參考

    此文獻給小丸子



    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产VA免费精品高清在线| 久久WWW免费人成人片| 好先生在线观看免费播放| 亚洲区日韩精品中文字幕| 亚欧免费无码aⅴ在线观看| 国产裸模视频免费区无码| 久久久久亚洲av无码尤物| 国产精品亚洲一区二区三区久久| 日韩在线不卡免费视频一区| 亚洲精品无码午夜福利中文字幕 | 中文字幕在线观看亚洲| 一级毛片免费播放视频| 国产免费看插插插视频| 亚洲经典千人经典日产| 免费a级毛片无码a∨蜜芽试看| 国产成人综合久久精品亚洲| 国产亚洲精品国产| 在线观看免费成人| 亚洲sss综合天堂久久久| 四虎成人精品永久免费AV| 亚洲日韩精品A∨片无码加勒比| 亚洲中文字幕无码久久2017| 久久亚洲精品无码网站| 国产传媒在线观看视频免费观看| 光棍天堂免费手机观看在线观看| 亚洲日本乱码在线观看| 无码精品人妻一区二区三区免费看| 亚洲AV香蕉一区区二区三区| 亚洲精品乱码久久久久66| 日韩精品视频免费在线观看| 男男黄GAY片免费网站WWW| 久久精品国产亚洲av水果派| 18女人腿打开无遮掩免费| 亚洲专区先锋影音| 亚洲一级Av无码毛片久久精品| eeuss影院免费直达入口| 亚洲午夜理论片在线观看| 亚洲精品无码永久在线观看| 在线观看人成视频免费无遮挡| 亚洲AV无码乱码国产麻豆穿越| 久热中文字幕在线精品免费|