自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SVN+CruiseControl+ANT環(huán)境搭建和配置介紹

開發(fā) 開發(fā)工具
今天我們要介紹的是使用CruiseControl+SVN+ANT實現持續(xù)集成之環(huán)境搭建和配置介紹。希望對大家有所幫助。

51CTO向您推薦《使用SVN+CruiseControl+ANT實現持續(xù)集成

  1. 環(huán)境搭建

  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編譯生成發(fā)布包

  etc:自帶容器Jetty對應的配置文件

  lib:自帶容器Jetty所需要到的Jar包

  logs:各項目生成日志存在文件夾

  projects:存放各項目文件目錄,進行程序的編譯

  webapps:CC自帶應用程序存放目錄

  cc-config:用于CC環(huán)境變量配置

  cruisecontrol:主應用程序CC目錄

  dashboard:用于編譯結果發(fā)布程序

  documentation:CC相關文檔

  config.xml:用于CC編譯配置文件,通過修改配置文件引入不同的插件,執(zhí)行不同的編譯流程

  cruisecontrol.bat:在WINDOWS環(huán)境下進行啟用CC批處理腳本

  cruisecontrol.sh:在Linux等環(huán)境下啟動CC腳本

  dashboard-config.xml:Dashboard配置文件

  1.2. 運行環(huán)境

  使用JAVA開發(fā)的CC,當然需要運行在JDK下并通過Web容器進行發(fā)布,具體要求如下:

  CC需要運行在至少JDK 1.4環(huán)境中,在環(huán)境變量中設置有JAVA_HOME,并把java/bin加入到path中;

  CC已經內建集成了ANT,不需要單獨引入;

  CC可以運行在多種應用服務器中,在自帶壓縮包中捆綁了一個開源應用服務器,那就是Jetty 6,下面為了盡快建立我們的環(huán)境,以下將使用該容器。

  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自動構建配置信息的規(guī)則。

  2.1. config.xml

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

  2.2. build.xml

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

  2.3. 執(zhí)行配置解析

  一個持續(xù)集成項目是從project節(jié)點開始的,對該項目進行的操作都會作為子節(jié)點存在與該根節(jié)點之下。對于每一個project節(jié)點,CC系統都會將其當作一個處理單元,并在最初建立該項目的時候進行初始化操作。

  name是project節(jié)點常用的屬性,也是必設且值唯一的屬性,該屬性的值會在整個CC系統使用,包括配置文件的${project.name}變量值。

  在一個項目節(jié)點中,我們可以定義監(jiān)聽器、本地目錄位置、變更輪詢目錄位置、輪詢間隔、任務執(zhí)行、單元測試、日志記錄等多種項目操作,同時CC系統支持插件擴展功能,這些擴展插件可以直接在一個項目中使用。

  2.3.1. 輪詢版本控制系統

  版本庫輪詢機制是使用modificationset進行配置的。CC系統內置的輪詢模塊會根據設定的時間段對版本庫進行檢測,一旦發(fā)現版本庫發(fā)生變更,就會調用Check Out Build Test Publish等一系列的操作,對最新的代碼進行集成,并運行一系列預先設定的任務。

  CC支持十多種版本控制系統,比如CVS、SVN、Starteam、VSS等,對這些版本控制系統的調用,只需要配置相應的節(jié)點名稱即可。本文以SVN版本管理系統為例。在modificationset節(jié)中,我們看到唯一的一個子節(jié)點:

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

  該節(jié)點使用了svn關鍵字,表示當前工程使用的版本控制系統是SVN,localWorkingCopy屬性的值是告訴CC本地的拷貝目錄,其余的工作則由CC內置的操作模塊進行。

  2.3.2. 執(zhí)行構建腳本

  實質上,執(zhí)行構建腳本也是CC的一個可定制任務,但由于自動構建是持續(xù)集成的一個重要組成部分,因此在此單獨提出。

  CC的自動構建是使用ANT工具來進行的,當然我們也可以使用其它的自動構建工具來替代(比如Maven),這些的工具僅僅是體現在一個任務配置語句上,在此,以ANT工具為例。

  在schedule節(jié),我們同樣使用了一個子節(jié)點來描述自動構建工作:

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

  該節(jié)點使用了ant關鍵字,表示該任務使用了ant來進行自動構建任務,anthome屬性則指定了ANT工具的具體位置,buildfile屬性則指定了ANT進行自動構建所使用的配置文件Build.xml文件的路徑。

  這樣,在CC決定進行自動構建任務時,會根據設定找到執(zhí)行所使用到的信息。

  2.3.3. 執(zhí)行單元測試

  CC可以自動偵測自動構建配置文件中單元測試的任務,并在代碼集成完畢將執(zhí)行結果反饋到相應的模塊。

  ANT支持xUnit系列的單元測試框架,只需要在配置文件中加入一個target節(jié),即可在自動構建完成之后,進行單元測試工作,有關的詳細配置,請參閱ANT官方文檔。

原文鏈接:http://www.cnblogs.com/shishanyuan/archive/2011/09/15/2177862.html

【編輯推薦】

  1. 專家在線答疑:如何進行SVN服務器端與Eclipse中的SVN客戶端配置?
  2. SVN1.6服務端和客戶端安裝配置之專家指導
  3. SVN項目---目錄布局詳解
  4. 多項目中SVN權限管理精辟解析
  5. 兩個簡單操作介紹TortoiseSVN項目
責任編輯:彭凡 來源: 博客園
相關推薦

2011-09-20 09:05:08

SVN

2011-09-15 09:21:46

持續(xù)集成

2011-11-25 09:09:09

JavaTomcatant

2016-08-12 13:22:01

React Nativ環(huán)境搭建創(chuàng)建項目

2011-06-30 13:31:35

MongoDB

2010-05-22 10:38:15

Symbian開發(fā)

2010-05-31 16:42:42

SVN權限配置

2010-09-29 09:28:59

J2ME開發(fā)環(huán)境

2017-06-23 11:17:24

MySQL搭建配置

2010-05-31 11:08:01

Mysclipse6.

2009-07-03 16:21:43

2020-09-30 08:54:16

鴻蒙

2010-03-04 11:01:06

Python開發(fā)環(huán)境

2010-02-06 13:18:51

CentOS LAMP

2009-07-01 10:12:40

JSP環(huán)境配置JSP引擎

2011-03-21 11:43:45

LAMPPHP

2011-03-21 11:33:09

LAMPApache

2010-05-27 18:49:38

SVN入門

2010-05-24 14:16:34

子命令SVN diff

2011-07-13 09:59:27

點贊
收藏

51CTO技術棧公眾號