成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

  1. 環(huán)境搭建

  1.1. 下載及目錄介紹

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

  下載了cruisecontrol-bin-2.8.4.zip 直接解壓到E盤下,文件結(jié)構(gòu)如下圖:

apache-ant-1.7.0:CC中使用ANT工具

  artifacts:CC編譯生成發(fā)布包

  etc:自帶容器Jetty對應(yīng)的配置文件

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

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

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

  webapps:CC自帶應(yīng)用程序存放目錄

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

  cruisecontrol:主應(yīng)用程序CC目錄

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

  documentation:CC相關(guān)文檔

  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,當(dāng)然需要運行在JDK下并通過Web容器進行發(fā)布,具體要求如下:

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

  CC已經(jīng)內(nèi)建集成了ANT,不需要單獨引入;

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

  1.3. 快速啟動CC

  運行根目錄下批處理文件cruisecontrol.bat,出現(xiàn)如下界面:

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

如果看到上圖結(jié)果,恭喜你已經(jīng)成功啟動CC。

  另外CC提供了更加人性化結(jié)果展示Dashboard界面,在瀏覽器輸入 http://localhost:8080/dashboard/

2. 配置介紹

  當(dāng)CC服務(wù)器啟動時,會自動檢測配置信息中的任務(wù)信息,并對其進行校驗和初始化,之后所有的工作,都是依據(jù)該配置信息進行的。

  CC的配置使用了其安裝目錄下的config.xml文件,我們可以通過文本編輯器打開該配置文件,編輯各種配置信息。配置信息的定義遵循了標(biāo)準(zhǔn)XML文件格式,同時遵循了ANT自動構(gòu)建配置信息的規(guī)則。

  2.1. config.xml

  1.  <cruisecontrol> 
  2.  <project name="connectfour"> 
  3. <!-- 用來訪問項目當(dāng)前創(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)建前的準(zhǔn)備工作 --> 
  8. <bootstrappers> 
  9.  <!-- 從源碼控制系統(tǒng)更新本地文件: cvsbootstrappers、vssbootstrappers、svnbootstrapper --> 
  10.  <antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="clean" /> 
  11. </bootstrappers> 
  12.  <!-- 檢查各個源碼控制系統(tǒng)中是否發(fā)生變化;quietperiod: 單位為秒 設(shè)定等待的時間 --> 
  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.  <!-- 指定了構(gòu)建的時間間隔 單位為秒--> 
  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 結(jié)束之后運行,發(fā)布 build 的結(jié)果 --> 
  27.  <publishers> 
  28.  <onsuccess> 
  29. <!--用于對創(chuàng)建過程中產(chǎn)生的人工制品進行發(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=默認(rèn)郵件后綴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="構(gòu)建日志" 
  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. <!—調(diào)用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. 進行自動化測試,依賴任務(wù)為compile--> 
  19. <target name="test" depends="compile"> 
  20.  <mkdir dir="target/test-classes"/> 
  21.  <!—調(diào)用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)建測試結(jié)果存放目錄--> 
  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任務(wù)--> 
  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系統(tǒng)都會將其當(dāng)作一個處理單元,并在最初建立該項目的時候進行初始化操作。

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

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

  2.3.1. 輪詢版本控制系統(tǒng)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【編輯推薦】

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

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-31 16:42:42

SVN權(quán)限配置

2010-05-22 10:38:15

Symbian開發(fā)

2010-09-29 09:28:59

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

2009-07-03 16:21:43

2017-06-23 11:17:24

MySQL搭建配置

2010-05-31 11:08:01

Mysclipse6.

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-24 14:16:34

子命令SVN diff

2011-07-13 09:59:27

2010-05-27 18:49:38

SVN入門
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩精品久久久久 | 欧美精品一区二区在线观看 | 国产日产精品一区二区三区四区 | 操人视频在线观看 | 日韩视频精品 | 久久av一区二区三区 | 国产精品国产三级国产aⅴ浪潮 | 国产超碰人人爽人人做人人爱 | 亚洲精品久久久久久久久久吃药 | 国产99在线 | 欧美 | 午夜视频在线免费观看 | av超碰| 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 综合欧美亚洲 | 亚洲高清在线观看 | 久久com| 国产精品毛片无码 | 91久久精品一区 | 欧美色欧美亚洲另类七区 | 日韩视频一区二区在线 | 在线欧美一区 | 精品久久影院 | 国产精品美女久久久久久不卡 | 午夜免费视频 | 日韩精品1区2区 | 欧美日本在线观看 | 日韩在线一区二区三区 | 毛片a级 | 国产欧美日韩一区 | 人成在线视频 | 日韩精品在线看 | 亚洲午夜精品 | 中文字幕 国产精品 | 日本一区二区在线视频 | av黄色在线播放 | 亚洲一区视频在线 | 三区在线 | 色天堂影院 | 亚洲精品一区二区网址 | 在线免费观看毛片 | 91精品久久久久 |