• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Heath's Blog

            There is no end, it is just the beginning! - A Game Developer's Notes

            CruiseControl.NET for CI in Game development

                有個(gè)項(xiàng)目使用了CruiseControl.NET(以下簡(jiǎn)稱CC.NET)作為持續(xù)集成工具,周末抽空研究了一下,發(fā)現(xiàn)這款由ThoughtWorks貢獻(xiàn)的開源工具功能非常強(qiáng)大,主要體現(xiàn)在下面三個(gè)方面:

            1)靈活、高可配置性,如:多重組合條件觸發(fā)、多任務(wù)隊(duì)列策略;

            2)兼容目前幾乎所有的流行SCM工具,使得多種異構(gòu)系統(tǒng)能夠由CruiseControl.NET統(tǒng)一監(jiān)控和管理;

            3)完善的使用文檔,使上手和維護(hù)變得容易;

                而該項(xiàng)目引以自豪的代碼check in觸發(fā)構(gòu)建的功能通過CC.NET也很容易實(shí)現(xiàn)。之前使用過Hudson,該系統(tǒng)采用主從式架構(gòu),使用者通過網(wǎng)頁讓Master控制Slave動(dòng)作,由于Master由別的部門管理,出問題后需要聯(lián)系相關(guān)人解決,會(huì)有一定的處理延遲,而且安裝在構(gòu)建機(jī)上的Slave服務(wù)經(jīng)常崩潰。而CC.NET直接安裝在構(gòu)建機(jī)上,配置IIS后可通過網(wǎng)頁直接訪問,操作維護(hù)都較前者容易。由于之前的構(gòu)建腳本是用VisualBuild實(shí)現(xiàn)的,所以不可能再花時(shí)間用CC.NET再寫一遍。而通過實(shí)驗(yàn)得知,其實(shí)CC.NET能夠以ExecutableTask的形式很好地與VisualBuild集成,目前每小時(shí)定時(shí)構(gòu)建、NightBuild和構(gòu)建成功后觸發(fā)的自動(dòng)測(cè)試都已經(jīng)放到了CC.NET上了。

                ccnet.config Example:

            <cruisecontrol xmlns:cb="urn:ccnet.config.builder">
              <queue name="Q1" duplicates="ApplyForceBuildsReAdd" />
              <queue name="Q2" duplicates="ApplyForceBuildsReAdd" />
              <project name="AgileBuild" queue="Q1" queuePriority="1">
                <category>AutoBuild</category>
                <triggers>
                  <filterTrigger startTime="18:00" endTime="10:00">
                    <trigger type="intervalTrigger" name="Continuous" seconds="1800" buildCondition="ForceBuild" />
                    <weekDays>
                      <weekDay>Monday</weekDay>
                      <weekDay>Tuesday</weekDay>
                      <weekDay>Wednesday</weekDay>
                      <weekDay>Thursday</weekDay>
                      <weekDay>Friday</weekDay>
                    </weekDays>
                  </filterTrigger>
                </triggers>
                <tasks>
                  <exec>
                    <executable>VisBuildCmd.exe</executable>
                    <buildArgs>E:\GAMEDev\AgileBuilder.bld</buildArgs>
                    <baseDirectory>D:\VisBuildPro7</baseDirectory>
                    <buildTimeoutSeconds>3000</buildTimeoutSeconds>
                  </exec>
                </tasks>
              </project>
              <project name="NightBuild" queue="Q2" queuePriority="1">
                <category>AutoBuild</category>
                <triggers>
                  <scheduleTrigger time="23:00" buildCondition="ForceBuild" name="Scheduled">
                    <weekDays>
                      <weekDay>Monday</weekDay>
                      <weekDay>Tuesday</weekDay>
                      <weekDay>Wednesday</weekDay>
                      <weekDay>Thursday</weekDay>
                      <weekDay>Friday</weekDay>
                    </weekDays>
                  </scheduleTrigger>      
                </triggers>  
                <tasks>
                  <exec>
                    <executable>VisBuildCmd.exe</executable>
                    <buildArgs>"BUILD_OPTION=clientworldeffect" "PACK_TYPE=RAR" E:\GAMEDev\NightBuilder.bld</buildArgs>
                    <baseDirectory>D:\VisBuildPro7</baseDirectory>
                    <buildTimeoutSeconds>0</buildTimeoutSeconds>
                  </exec>
                </tasks>
              </project>
              <project name="NightAutoTest" queue="Q2" queuePriority="2">
                <category>AutoTest</category>
                <triggers>
                  <projectTrigger serverUri="tcp://heath-builder:21234/CruiseManager.rem" project="NightBuild">
                    <triggerStatus>Success</triggerStatus>
                    <innerTrigger type="intervalTrigger" seconds="60" buildCondition="ForceBuild" />
                  </projectTrigger>
                </triggers>
                <tasks>
                  <exec>
                    <executable>VisBuildCmd.exe</executable>
                    <buildArgs>E:\GAMEDev\AutoTest.bld</buildArgs>
                    <baseDirectory>D:\VisBuildPro7</baseDirectory>
                    <buildTimeoutSeconds>0</buildTimeoutSeconds>
                  </exec>
                </tasks>
              </project>  
            </cruisecontrol>
            

            References

            [1] http://cruisecontrol.sourceforge.net/

            [2] http://www.kinook.com/VisBuildPro/

            posted on 2010-08-09 20:22 Heath 閱讀(2236) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Game Development

            Xx性欧美肥妇精品久久久久久 | 91精品国产91久久久久久| 久久丫精品国产亚洲av| 91精品无码久久久久久五月天| 久久婷婷色综合一区二区| 亚洲精品国精品久久99热一| segui久久国产精品| 久久精品国产亚洲77777| 久久精品国产99国产精品| 激情伊人五月天久久综合| 亚洲精品午夜国产va久久| 精品久久一区二区三区| 亚洲国产精品无码久久久不卡| 国产精品gz久久久| 精品久久久久久国产潘金莲 | 亚洲精品无码久久千人斩| 久久国产成人亚洲精品影院| 日韩久久久久久中文人妻| 欧美精品福利视频一区二区三区久久久精品| 少妇久久久久久久久久| 久久无码专区国产精品发布| 久久久噜噜噜久久中文字幕色伊伊| 久久久久成人精品无码中文字幕 | 2021久久精品国产99国产精品 | 国产精品久久久久久搜索| 久久久久久亚洲精品成人| 精品多毛少妇人妻AV免费久久| 久久播电影网| 99久久国产主播综合精品| 99热精品久久只有精品| 亚洲国产成人久久精品动漫| 久久久久久久综合日本亚洲| 国产91色综合久久免费| 国产精品九九九久久九九 | 国产精品久久久久久久久久影院 | 99热成人精品免费久久| 久久国产免费直播| 无码人妻久久一区二区三区蜜桃| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 伊人精品久久久久7777| 无码任你躁久久久久久久|