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

下載本文檔

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

文檔簡介

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

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 腳本首先從源代碼管理庫獲取最新的代碼,并按照特定的構(gòu)FTP 服務(wù)器(FVT) (SVT) 環(huán)境則包括了測試服務(wù)器和測試數(shù)據(jù)等信息,其上的 Ant 腳本則負(fù)責(zé)從 FTP 服務(wù)器獲取最新的構(gòu)建,提取更新所需的產(chǎn)品代碼(如果需要,還要提取必要的數(shù)據(jù)庫更新腳本,完成數(shù)據(jù)庫架構(gòu)的重構(gòu))來完成測試環(huán) 運行環(huán)境,其上的 Ant 腳本可以將通過測試的構(gòu)建生成可交付的產(chǎn)品或線上產(chǎn)品更新包, 這一過程常伴隨產(chǎn)品版權(quán)信息驗證、產(chǎn)品包壓縮

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論