基于 Ant 搭建敏捷開(kāi)發(fā)過(guò)程中的持續(xù)集成環(huán)境_第1頁(yè)
基于 Ant 搭建敏捷開(kāi)發(fā)過(guò)程中的持續(xù)集成環(huán)境_第2頁(yè)
基于 Ant 搭建敏捷開(kāi)發(fā)過(guò)程中的持續(xù)集成環(huán)境_第3頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Ant持續(xù)集成(CI)Apache Ant 提供了豐富的核心任務(wù)以及擴(kuò)展任務(wù)來(lái)完成持續(xù)集成過(guò)程中的各項(xiàng)工作,同時(shí)開(kāi)源社區(qū) Ant-Contrib 提供的 Ant 任務(wù)更是大大增強(qiáng)了 Ant 的可編程性,使得 Ant 有能力完成更為復(fù)雜的邏輯操作。基本的持續(xù)集成環(huán)境一個(gè)持續(xù)、穩(wěn)定的構(gòu)建是整個(gè)持續(xù)集成過(guò)程中的關(guān)鍵。在每個(gè)迭代周期的開(kāi)發(fā)過(guò)程中, 軟件開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)當(dāng)及時(shí)將最新的功能代碼進(jìn)行提交和構(gòu)建 該能夠獲取經(jīng)過(guò)驗(yàn)證后的最新的產(chǎn)品構(gòu)建,并將其打包成可交付產(chǎn)品或進(jìn)行線上產(chǎn)品的更 新,交由產(chǎn)品的項(xiàng)目關(guān)系人或最終客戶進(jìn)行使用,確??蛻粜枨笈c軟件產(chǎn)品一致。目前在Web 2.0 應(yīng)用的敏捷開(kāi)發(fā)過(guò)程中多采用這樣一

2、種集成環(huán)境,以滿足 Web 2.0 應(yīng)用最為典型的“Always Beta”特性。下圖展示了一種基本的持續(xù)集成環(huán)境的拓?fù)浣Y(jié)構(gòu)。1. 持續(xù)集成環(huán)境的拓?fù)浣Y(jié)構(gòu)持續(xù)構(gòu)建服務(wù)器上的 Ant 腳本首先從源代碼管理庫(kù)獲取最新的代碼,并按照特定的構(gòu)FTP 服務(wù)器(FVT) (SVT) 環(huán)境則包括了測(cè)試服務(wù)器和測(cè)試數(shù)據(jù)等信息,其上的 Ant 腳本則負(fù)責(zé)從 FTP 服務(wù)器獲取最新的構(gòu)建,提取更新所需的產(chǎn)品代碼(如果需要,還要提取必要的數(shù)據(jù)庫(kù)更新腳本,完成數(shù)據(jù)庫(kù)架構(gòu)的重構(gòu))來(lái)完成測(cè)試環(huán) 運(yùn)行環(huán)境,其上的 Ant 腳本可以將通過(guò)測(cè)試的構(gòu)建生成可交付的產(chǎn)品或線上產(chǎn)品更新包, 這一過(guò)程常伴隨產(chǎn)品版權(quán)信息驗(yàn)證、產(chǎn)品包壓縮

3、以及產(chǎn)品部署等動(dòng)作。Ant 如何幫助持續(xù)集成Ant 作為 Java 開(kāi)發(fā)領(lǐng)域應(yīng)用最為廣泛的自動(dòng)構(gòu)建工具,不僅可以幫助開(kāi)發(fā)團(tuán)隊(duì)實(shí)施構(gòu)建包以完成后續(xù)的產(chǎn)品測(cè)試與發(fā)布工作化。本文不會(huì)對(duì) Ant 的基本概念和所有任務(wù)進(jìn)行逐一介紹,而是將作者在實(shí)踐過(guò)程中認(rèn)為對(duì)持續(xù)集成有所幫助的概念和任務(wù)加以解釋闡明,以期讀者更好地了解 Ant 的能力,并加以靈活的運(yùn)用。 ( ) 任務(wù)提供了在一個(gè)構(gòu)建腳本內(nèi)調(diào)用外部腳本特定目標(biāo)(target)的能力,這種能計(jì)一個(gè)獨(dú)立的控制腳本,借助 任務(wù)使其通過(guò)調(diào)用不同的項(xiàng)目構(gòu)建腳本完成整體項(xiàng)目的集成,這樣做的一個(gè)最明顯好處是使我們可以快速的適應(yīng)項(xiàng)目變動(dòng),符合隨需應(yīng)變On Demand)

4、的開(kāi)發(fā)模式。 任務(wù)區(qū)別于 任務(wù)之處在于,其只能調(diào)用同一個(gè)構(gòu)建腳本之內(nèi)的構(gòu)建目標(biāo),他所提供的是對(duì)一個(gè)構(gòu)建腳本自身的清晰管理。以往依賴(lài)于 depends 屬性的方式使得我們很容易迷失在復(fù)雜的目標(biāo)依賴(lài)關(guān)系中,而使用 則能夠?qū)⒚總€(gè)構(gòu)建腳本的任務(wù)以顯式的、易修改的方式呈現(xiàn)給項(xiàng)目構(gòu)建者。 ant-contrib 開(kāi)源項(xiàng)目提供的擴(kuò)展任務(wù),是增強(qiáng)版本的 和 任務(wù),他們不僅具備前二者的基本能力,還可以返回外部腳本或同腳本其他目標(biāo)中的屬性,可類(lèi)比編程語(yǔ)言中帶返回值的方法調(diào)用。Available Condition在構(gòu)建過(guò)程中,構(gòu)建腳本不可避免地會(huì)對(duì)許多外部資源(文件,目錄,URL 等)進(jìn)行 可用性。 任務(wù)可以幫助

5、我們對(duì)各種外部資源進(jìn)行判斷,通過(guò)設(shè)置相應(yīng)的屬性來(lái)表明判斷結(jié)果,進(jìn)而引導(dǎo)后續(xù)的構(gòu)建操作。 (nested element)/ 等,具備了對(duì)資源進(jìn)行更加復(fù)雜的邏輯判斷能力。For If當(dāng)我們使用 Ant 腳本編寫(xiě)一些較為復(fù)雜的邏輯功能,比如循環(huán)和流程判斷時(shí),自然希望 Ant 能支持這種編程能力。然而 Ant 核心任務(wù)中并沒(méi)有提供 任務(wù),只是在 任務(wù)的屬性中支持 if module-A-present build-module-A 目標(biāo)。但是,必須注意的一點(diǎn)是,這里的 if 并不是判斷 module-A-present 屬性是否設(shè)置為特定值,而僅僅是檢查該屬性是否被設(shè)置了,因而其可編程性并不是很強(qiáng)。

6、Ant-contrib 為 Ant 提供了與通常所使用的編程語(yǔ)言功能相同的 和 任務(wù),在構(gòu)建過(guò)程中靈活運(yùn)用這兩個(gè)任務(wù),將大大增強(qiáng) Ant 對(duì)邏輯操作的控制能力,這其實(shí)就是XML 腳本的編程。在具體的實(shí)踐過(guò)程,有一點(diǎn)需要特別注意:在使用 任務(wù)的過(guò)程中,如果我們期望在循環(huán)體內(nèi)使用一個(gè)變量,而非 Ant 的 property,則需借助由 ant-contrib 提供的 任務(wù)(ant-contrib 任務(wù))來(lái)實(shí)現(xiàn)。盡管這與 property 的值一經(jīng)設(shè)置便無(wú)法改變的設(shè)計(jì)原則相抵,但有時(shí)能夠給構(gòu)建腳本很大程度上的靈活性。Replace ReplaceRegExp在由開(kāi)發(fā)構(gòu)建包向產(chǎn)品構(gòu)建包轉(zhuǎn)變的過(guò)程中之一

7、 , 比如我們不能假設(shè)用戶會(huì)將 JDK 安裝在與開(kāi)發(fā)環(huán)境相同的路徑下,這時(shí)便可以使ant 任務(wù), 任務(wù)可以針對(duì)特定的字符串的執(zhí)行替換操作。不僅Ant 任務(wù),還可以實(shí)現(xiàn)基于正則表達(dá)式的替換。例如,要將 test.bat 文件中的行首“java”字符串替換為“././java/bin/java”而不影響其他“java”字符串,可以使用如下 ant 腳本:Filterchain MapperFilterchain 和 Mapper 是在集成腳本中經(jīng)常用到的 ant Filterchain 增強(qiáng)了面向數(shù)據(jù)傳輸?shù)?ant 任務(wù)的能力,如 Concat,Copy,Loadproperties 和 Move

8、,借助于各種不同功能的 filter,使得這些任務(wù)具備了數(shù)據(jù)篩選和處理的能力,非常類(lèi)似于 Unix 系統(tǒng)中的管道的概念。例如,要實(shí)現(xiàn)將 A 文件夾復(fù)制到 B 文件夾,同時(shí)對(duì) B 文件夾中所有 jsp 文件的文copyright.txt ant 腳本。Mapper Copy,Move Unzip 任務(wù)中,它的作用在于為這些任務(wù)增加指定 來(lái)指定源文件集,更可以通過(guò)各種不同功能的 mapper建持續(xù)集成環(huán)境中起到了極為靈活的作用ant 腳本。Taskdef CVS,SVN 或 IBM ClearCase 作為項(xiàng)目源代碼庫(kù),使用Apache Tomcat,IBM WebSphere Applicati

9、on 作為測(cè)試或產(chǎn)品環(huán)境的部署服務(wù)器,使用LiquiBase,DBdeploy Ant 借助其易擴(kuò)展的特性, 對(duì)所有這些工具提供了很好的支持,外部工具的提供者只要實(shí)現(xiàn)特定的 Ant 任務(wù)接口,就Ant Ant 任務(wù),Ant 腳本來(lái)管理整個(gè)集成環(huán)境的目的。實(shí)現(xiàn)一個(gè)基本的持續(xù)集成環(huán)境在一個(gè)典型的線上 Web 2.0 應(yīng)用的迭代開(kāi)發(fā)周期中,持續(xù)集成通常涉及構(gòu)建、部署、(比如 基于 Java EE WAR 或 EAR 文件)。因此,在構(gòu)建服務(wù)器上調(diào)用一個(gè)綜合性的 Ant 構(gòu)建腳本(清單 1),產(chǎn)生其它動(dòng)作所需要的產(chǎn)品包,則成為整個(gè)持續(xù)集成過(guò)程中最為核心的一步。清單 1. 產(chǎn)生其它動(dòng)作所需要的產(chǎn)品包不難

10、看出, 任務(wù)通過(guò)調(diào)用不同的任務(wù)組合達(dá)到了為不同構(gòu)建目的提供不同構(gòu)建動(dòng)作的目的,其中包括對(duì)“冒煙”測(cè)試,功能測(cè)試以及產(chǎn)品環(huán)境安裝的特定支持,而各個(gè)環(huán)境所需要的產(chǎn)品包也因 任務(wù)目標(biāo)的不同而不同,這種松散組合的方式為今后腳本的維護(hù)和更新提供了良好的基礎(chǔ)。在為產(chǎn)品環(huán)境提供產(chǎn)品包(perform_productBuild)的目標(biāo)中, 擴(kuò)展任務(wù)通過(guò)調(diào)用外部的 checkLicese.xml 腳本來(lái)對(duì)產(chǎn)品進(jìn)行版權(quán)核查,任何沒(méi)有版權(quán)信息的文本文件都將被記錄到 reportFile 中。雖然類(lèi)似的這種功能可以使用多種腳本語(yǔ)言來(lái)方便的實(shí)Python Ruby Ant Ant 腳本2 Ant 實(shí)現(xiàn)版權(quán)信息檢查的部分腳本。2. Ant 實(shí)現(xiàn)版權(quán)信息檢查的部分腳本parator對(duì)于測(cè)試環(huán)境和產(chǎn)品環(huán)境而言,獲取產(chǎn)品包并自動(dòng)的進(jìn)行產(chǎn)品部署是兩者共同的首要工 Ant 具備了良好的跨平臺(tái)能力,我們不必為不同的部署環(huán)境(Windows 或 Linux)去編寫(xiě)不同的部署腳本,只需將精力集中于產(chǎn)品包的獲取和針對(duì)不同應(yīng)用服務(wù)器的部署即可,清單 3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論