<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用SVN+CruiseControl+ANT實現持續集成之二----環境搭建和配置介紹

      使用CruiseControl+SVN+ANT實現持續集成之二
      --環境搭建和配置介紹

      1. 環境搭建
      1.1. 下載及目錄介紹

      從官方站點http://cruisecontrol.sourceforge.net/download.html下載一份最新的 CC 壓縮包,最新的版本號為2.8.4

      下載了cruisecontrol-bin-2.8.4.zip 直接解壓到E盤下,文件結構如下圖:

      • apache-ant-1.7.0:CC中使用ANT工具
      • artifacts:CC編譯生成發布包
      • etc:自帶容器Jetty對應的配置文件
      • lib:自帶容器Jetty所需要到的Jar包
      • logs:各項目生成日志存在文件夾
      • projects:存放各項目文件目錄,進行程序的編譯
      • webapps:CC自帶應用程序存放目錄
      • cc-config:用于CC環境變量配置
      • cruisecontrol:主應用程序CC目錄
      • dashboard:用于編譯結果發布程序
      • documentation:CC相關文檔
      • config.xml:用于CC編譯配置文件,通過修改配置文件引入不同的插件,執行不同的編譯流程
      • cruisecontrol.bat:在WINDOWS環境下進行啟用CC批處理腳本
      • cruisecontrol.sh:在Linux等環境下啟動CC腳本
      • dashboard-config.xml:Dashboard配置文件


      1.2. 運行環境
      使用JAVA開發的CC,當然需要運行在JDK下并通過Web容器進行發布,具體要求如下:

      • CC需要運行在至少JDK 1.4環境中,在環境變量中設置有JAVA_HOME,并把java/bin加入到path中;
      • CC已經內建集成了ANT,不需要單獨引入;
      • CC可以運行在多種應用服務器中,在自帶壓縮包中捆綁了一個開源應用服務器,那就是Jetty 6,下面為了盡快建立我們的環境,以下將使用該容器。


      1.3. 快速啟動CC
      運行根目錄下批處理文件cruisecontrol.bat,出現如下界面:

      運行成功后,我們可以在瀏覽器輸入 http://localhost:8080/cruisecontrol/ 來驗證一下結果(采用Jetty默認的設置,端口號為 8080)

      如果看到上圖結果,恭喜你已經成功啟動CC。
      另外CC提供了更加人性化結果展示Dashboard界面,在瀏覽器輸入 http://localhost:8080/dashboard/


      2. 配置介紹
      當CC服務器啟動時,會自動檢測配置信息中的任務信息,并對其進行校驗和初始化,之后所有的工作,都是依據該配置信息進行的。
      CC的配置使用了其安裝目錄下的config.xml文件,我們可以通過文本編輯器打開該配置文件,編輯各種配置信息。配置信息的定義遵循了標準XML文件格式,同時遵循了ANT自動構建配置信息的規則。
      2.1. config.xml

       1 <cruisecontrol>
       2 <project name="connectfour">
       3 
       4     <!-- 用來訪問項目當前創建的狀態   file: 指定了狀態文件的位置 -->
       5     <listeners>
       6             <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
       7         </listeners>
       8 
       9         <!-- 在 CC 進行創建之前運行,創建前的準備工作 -->
      10          <bootstrappers>
      11             <!-- 從源碼控制系統更新本地文件: cvsbootstrappers、vssbootstrappers、svnbootstrapper -->
      12                 <antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="clean" />
      13          </bootstrappers>
      14 
      15         <!-- 檢查各個源碼控制系統中是否發生變化;quietperiod: 單位為秒 設定等待的時間 -->
      16         <!-- 第一次的取出工作為手動執行 -->
      17          <modificationset quietperiod="30">
      18             <!-- touch any file in connectfour project to trigger a build -->
      19             <filesystem folder="projects/${project.name}"/>
      20          </modificationset>
      21     
      22         <!-- 指定了構建的時間間隔 單位為秒-->
      23          <schedule interval="300">
      24             <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
      25          </schedule>
      26 
      27         <!-- 指定項目日志保存的地點 -->
      28          <log>
      29             <merge dir="projects/${project.name}/target/test-results"/>
      30          </log>
      31 
      32         <!-- 在 build loop 結束之后運行,發布 build 的結果 -->
      33         <publishers>
      34             <onsuccess>
      35               <!--用于對創建過程中產生的人工制品進行發布-->
      36                 <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
      37             </onsuccess>
      38 
      39        <!--
      40           mailhost=郵件主機
      41           returnname=發件人
      42           returnaddress=發件地址
      43           defaultsuffix=默認郵件后綴
      44         -->
      45         <htmlemail
      46           charset="UTF-8"
      47           mailhost="test163.com" 
      48           defaultsuffix="@xxx.com"
      49           username="xxx@163.com"
      50           password="xxx"
      51           returnname="CruiseControl"
      52           returnaddress="xxx@163.com"
      53           subjectprefix="構建日志"
      54           xsldir="webapps/cruisecontrol/xsl"
      55           css="webapps/cruisecontrol/css/cruisecontrol.css">
      56           <always address="xxx@xxx.com.cn"/>
      57           <failure address="xxx@xxx,yyy@yyy.com.cn"/>            
      58         </htmlemail>
      59         </publishers>
      60     </project>
      61 </cruisecontrol>

      2.2. build.xml

       1 <!—調用ANT執行集成流程,包括清空目錄、編譯、休眠、測試、打包 -->
       2 <project name="connectfour" default="all">
       3     <target name="all" depends="clean, compile, sleep, test, jar"/>
       4 
       5     <!-- 1. 刪除根目錄下target 目錄-->
       6     <target name="clean">
       7         <delete dir="target" quiet="true" />
       8     </target>
       9 
      10     <!-- 2. 編譯程序,創建目錄并編譯程序,編譯輸出為target/classes目錄下-->
      11     <target name="compile">
      12         <mkdir dir="target/classes"/>
      13         <javac srcdir="src" destdir="target/classes"/>
      14     </target>
      15 
      16     <!-- 3. 在創建前等待60秒,用于Dashboard觀察進程-->
      17     <target name="sleep">
      18         <echo message="Sleeping for a while so you can see the build in the new dashboard" />
      19         <sleep seconds="60" />
      20     </target>
      21 
      22     <!-- 4. 進行自動化測試,依賴任務為compile-->
      23     <target name="test" depends="compile">
      24         <mkdir dir="target/test-classes"/>
      25         <!—調用junit進行自動化測試-->
      26         <javac srcdir="test" destdir="target/test-classes">
      27             <classpath>
      28                 <pathelement location="target/classes"/>
      29                 <pathelement location="lib/junit.jar"/>
      30             </classpath>
      31         </javac>
      32 
      33         <!—創建測試結果存放目錄-->
      34         <mkdir dir="target/test-results"/>
      35         <junit haltonfailure="no" printsummary="on">
      36             <classpath >
      37                 <pathelement location="target/classes"/>
      38                 <pathelement location="lib/junit.jar"/>
      39                 <pathelement location="target/test-classes"/>
      40             </classpath>
      41             <formatter type="brief" usefile="false"/>
      42             <formatter type="xml" />
      43 
      44             <!—測試文件所在文件地址-->
      45             <batchtest todir="target/test-results" >
      46                 <fileset dir="target/test-classes" includes="**/*Test.class"/>
      47             </batchtest>
      48         </junit>
      49     </target>
      50 
      51     <!-- 5. 程序打包,依賴與compile任務-->
      52     <target name="jar" depends="compile">
      53         <jar jarfile="target/connectfour.jar" basedir="target/classes"/>
      54     </target>
      55 </project>

      2.3. 執行配置解析
           一個持續集成項目是從project節點開始的,對該項目進行的操作都會作為子節點存在與該根節點之下。對于每一個project節點,CC系統都會將其當作一個處理單元,并在最初建立該項目的時候進行初始化操作。
           name是project節點常用的屬性,也是必設且值唯一的屬性,該屬性的值會在整個CC系統使用,包括配置文件的${project.name}變量值。
           在一個項目節點中,我們可以定義監聽器、本地目錄位置、變更輪詢目錄位置、輪詢間隔、任務執行、單元測試、日志記錄等多種項目操作,同時CC系統支持插件擴展功能,這些擴展插件可以直接在一個項目中使用。
        2.3.1. 輪詢版本控制系統
           版本庫輪詢機制是使用modificationset進行配置的。CC系統內置的輪詢模塊會根據設定的時間段對版本庫進行檢測,一旦發現版本庫發生變更,就會調用Check Out Build Test Publish等一系列的操作,對最新的代碼進行集成,并運行一系列預先設定的任務。
           CC支持十多種版本控制系統,比如CVS、SVN、Starteam、VSS等,對這些版本控制系統的調用,只需要配置相應的節點名稱即可。本文以SVN版本管理系統為例。在modificationset節中,我們看到唯一的一個子節點:

      <svn localWorkingCopy="projects/CM/${project.name}/src/${project.name}"/>

           該節點使用了svn關鍵字,表示當前工程使用的版本控制系統是SVN,localWorkingCopy屬性的值是告訴CC本地的拷貝目錄,其余的工作則由CC內置的操作模塊進行。
        2.3.2. 執行構建腳本
           實質上,執行構建腳本也是CC的一個可定制任務,但由于自動構建是持續集成的一個重要組成部分,因此在此單獨提出。
           CC的自動構建是使用ANT工具來進行的,當然我們也可以使用其它的自動構建工具來替代(比如Maven),這些的工具僅僅是體現在一個任務配置語句上,在此,以ANT工具為例。
           在schedule節,我們同樣使用了一個子節點來描述自動構建工作:

      <ant anthome="ant6" buildfile="projects/CM/${project.name}/src/${project.name}/build.xml"/>

           該節點使用了ant關鍵字,表示該任務使用了ant來進行自動構建任務,anthome屬性則指定了ANT工具的具體位置,buildfile屬性則指定了ANT進行自動構建所使用的配置文件Build.xml文件的路徑。
           這樣,在CC決定進行自動構建任務時,會根據設定找到執行所使用到的信息。
        2.3.3. 執行單元測試
           CC可以自動偵測自動構建配置文件中單元測試的任務,并在代碼集成完畢將執行結果反饋到相應的模塊。
           ANT支持xUnit系列的單元測試框架,只需要在配置文件中加入一個target節,即可在自動構建完成之后,進行單元測試工作,有關的詳細配置,請參閱ANT官方文檔。

       

      posted @ 2011-09-15 18:37  shishanyuan  閱讀(2868)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久热这里有精品视频播放| 国产精品13页| 南澳县| 久久国产热这里只有精品| 亚洲高清WWW色好看美女| 丰满爆乳一区二区三区| 日韩精品中文字幕一线不卡 | 成人自拍短视频午夜福利| 桑植县| 久热这里只有精品在线观看| 午夜成人性爽爽免费视频| 天天躁夜夜踩很很踩2022| 狠狠躁夜夜躁人人爽天天古典| 梧州市| 97精品亚成在人线免视频| 精品人妻中文字幕在线| 国产仑乱无码内谢| 四虎永久免费很黄的视频| 亚洲色大成永久WW网站| 国产乱子伦一区二区三区视频播放| 国产精品一码二码三码| 99久久国产福利自产拍| 极品无码人妻巨屁股系列| 免费无码又爽又刺激高潮虎虎视频 | 国产成人亚洲无码淙合青草| 国产精品美女免费无遮挡| 欧美日韩另类国产| 亚洲日韩一区二区| 国产精品一区二区三区日韩 | 国产精品va在线观看h| 国产精品久久久久乳精品爆| 国内精品一区二区不卡| 色婷婷五月综合久久| 亚洲日本va午夜在线影院| 高清中文字幕国产精品| 亚洲av成人无网码天堂| 亚洲AV成人无码久久精品四虎| 国产精品任我爽爆在线播放6080| 亚洲精品色一区二区三区| 欧美人与性动交α欧美精品| 欧美男男作爱videos可播放|