




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上精選優(yōu)質文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質文檔-傾情為你奉上專心-專注-專業(yè)基于 Ant 搭建敏捷開發(fā)過程中的持續(xù)集成環(huán)境持續(xù)集成(CI)是敏捷開發(fā)過程中至為關鍵的一個環(huán)節(jié),在每個迭代開發(fā)周期中,合理地對軟件產(chǎn)品進行持續(xù)集成,將有效協(xié)調(diào)軟件編碼,測試以及版本發(fā)布各個團隊的工作進程,降低軟件開發(fā)風險,對客戶需求做出最及時有效的反饋。Apache Ant 提供了豐富的核心任務以及擴展任務來完成持續(xù)集成過程中的各項工作,同時開源社區(qū) Ant-Contrib 提供的 Ant 任務更是大大增強了 Ant 的可編程性,使得 Ant 有能力完成更為復雜的邏輯
2、操作?;镜某掷m(xù)集成環(huán)境一個持續(xù)、穩(wěn)定的構建是整個持續(xù)集成過程中的關鍵。在每個迭代周期的開發(fā)過程中,軟件開發(fā)團隊應當及時將最新的功能代碼進行提交和構建,以便使軟件測試團隊能夠進行功能或系統(tǒng)測試,及早發(fā)現(xiàn)缺陷并盡快解決。同時,在相應迭代周期的后期,版本發(fā)布團隊應該能夠獲取經(jīng)過驗證后的最新的產(chǎn)品構建,并將其打包成可交付產(chǎn)品或進行線上產(chǎn)品的更新,交由產(chǎn)品的項目關系人或最終客戶進行使用,確保客戶需求與軟件產(chǎn)品一致。目前在 Web 2.0 應用的敏捷開發(fā)過程中多采用這樣一種集成環(huán)境,以滿足 Web 2.0 應用最為典型的“Always Beta”特性。下圖展示了一種基本的持續(xù)集成環(huán)境的拓撲結構。圖 1.
3、 持續(xù)集成環(huán)境的拓撲結構持續(xù)構建服務器上的 Ant 腳本首先從源代碼管理庫獲取最新的代碼,并按照特定的構建策略執(zhí)行構建,比如在固定時間觸發(fā)每日構建,而后將構建結果自動上傳至 FTP 服務器用以保存和分發(fā);功能測試 (FVT) 或系統(tǒng)測試 (SVT) 環(huán)境則包括了測試服務器和測試數(shù)據(jù)等信息,其上的 Ant 腳本則負責從 FTP 服務器獲取最新的構建,提取更新所需的產(chǎn)品代碼(如果需要,還要提取必要的數(shù)據(jù)庫更新腳本,完成數(shù)據(jù)庫架構的重構)來完成測試環(huán)境的更新,而后調(diào)用測試腳本進行測試并產(chǎn)生測試報告;產(chǎn)品環(huán)境則是面向終端用戶的產(chǎn)品運行環(huán)境,其上的 Ant 腳本可以將通過測試的構建生成可交付的產(chǎn)品或線上
4、產(chǎn)品更新包,這一過程常伴隨產(chǎn)品版權信息驗證、產(chǎn)品包壓縮以及產(chǎn)品部署等動作。Ant 如何幫助持續(xù)集成Ant 作為 Java 開發(fā)領域應用最為廣泛的自動構建工具,不僅可以幫助開發(fā)團隊實施每日構建生成構建包,更支持在此構建包基礎之上,生成測試團隊和版本發(fā)布團隊所需要的構建包以完成后續(xù)的產(chǎn)品測試與發(fā)布工作,最終使得整個迭代周期過程的產(chǎn)品集成實現(xiàn)自動化。本文不會對 Ant 的基本概念和所有任務進行逐一介紹,而是將作者在實踐過程中認為對持續(xù)集成有所幫助的概念和任務加以解釋闡明,以期讀者更好地了解 Ant 的能力,并加以靈活的運用。 與 ( 與 ) 任務提供了在一個構建腳本內(nèi)調(diào)用外部腳本特定目標(targe
5、t)的能力,這種能力可以很好的幫助我們管理整個持續(xù)集成過程。特別是在有多個項目構建需求的情況時,設計一個獨立的控制腳本,借助 任務使其通過調(diào)用不同的項目構建腳本完成整體項目的集成,這樣做的一個最明顯好處是使我們可以快速的適應項目變動,符合隨需應變(On Demand)的開發(fā)模式。 任務區(qū)別于 任務之處在于,其只能調(diào)用同一個構建腳本之內(nèi)的構建目標,他所提供的是對一個構建腳本自身的清晰管理。以往依賴于 depends 屬性的方式使得我們很容易迷失在復雜的目標依賴關系中,而使用 則能夠將每個構建腳本的任務以顯式的、易修改的方式呈現(xiàn)給項目構建者。 和 是 ant-contrib 開源項目提供的擴展任務
6、,是增強版本的 和 任務,他們不僅具備前二者的基本能力,還可以返回外部腳本或同腳本其他目標中的屬性,可類比編程語言中帶返回值的方法調(diào)用。Available 與 Condition在構建過程中,構建腳本不可避免地會對許多外部資源(文件,目錄,URL 等)進行訪問甚至修改,而為了能夠有效的對這些資源進行操作,所需做的第一步通常是驗證資源的可用性。 任務可以幫助我們對各種外部資源進行判斷,通過設置相應的屬性來表明判斷結果,進而引導后續(xù)的構建操作。另外,在某些情況下,構建腳本或許需要對多個資源同時進行判斷而不僅僅是單個資源。 任務通過支持豐富的內(nèi)嵌標記(nested element),如 / 等,具備
7、了對資源進行更加復雜的邏輯判斷能力。For 與 If當我們使用 Ant 腳本編寫一些較為復雜的邏輯功能,比如循環(huán)和流程判斷時,自然希望 Ant 能支持這種編程能力。然而 Ant 核心任務中并沒有提供 任務,只是在 任務的屬性中支持 if 屬性,比如 ,即表示只有 module-A-present 屬性存在才執(zhí)行 build-module-A 目標。但是,必須注意的一點是,這里的 if 并不是判斷 module-A-present 屬性是否設置為特定值,而僅僅是檢查該屬性是否被設置了,因而其可編程性并不是很強。Ant-contrib 為 Ant 提供了與通常所使用的編程語言功能相同的 和 任務,
8、在構建過程中靈活運用這兩個任務,將大大增強 Ant 對邏輯操作的控制能力,這其實就是一種基于 XML 腳本的編程。在具體的實踐過程,有一點需要特別注意:在使用 任務的過程中,如果我們期望在循環(huán)體內(nèi)使用一個變量,而非 Ant 的 property,則需借助由 ant-contrib 提供的 任務(ant-contrib 任務)來實現(xiàn)。盡管這與 property 的值一經(jīng)設置便無法改變的設計原則相抵,但有時能夠給構建腳本很大程度上的靈活性。Replace 與 ReplaceRegExp在由開發(fā)構建包向產(chǎn)品構建包轉變的過程中,替換與開發(fā)環(huán)境相關的屬性值是主要工作之一 , 比如我們不能假設用戶會將 J
9、DK 安裝在與開發(fā)環(huán)境相同的路徑下,這時便可以使用 ant 的 任務, 任務可以針對特定的字符串的執(zhí)行替換操作。不僅如此,利用 Ant 擴展任務所提供的 任務,還可以實現(xiàn)基于正則表達式的替換。例如,要將 test.bat 文件中的行首“java”字符串替換為“././java/bin/java”而不影響其他“java”字符串,可以使用如下 ant 腳本:Filterchain 與 MapperFilterchain 和 Mapper 是在集成腳本中經(jīng)常用到的 ant 概念。Filterchain 增強了面向數(shù)據(jù)傳輸?shù)?ant 任務的能力,如 Concat,Copy,Loadproperties
10、 和 Move,借助于各種不同功能的 filter,使得這些任務具備了數(shù)據(jù)篩選和處理的能力,非常類似于 Unix 系統(tǒng)中的管道的概念。例如,要實現(xiàn)將 A 文件夾復制到 B 文件夾,同時對 B 文件夾中所有 jsp 文件的文件頭添加 copyright.txt 文件內(nèi)容的任務,可以使用如下 ant 腳本。Mapper 則常出現(xiàn)于 Copy,Move 或 Unzip 任務中,它的作用在于為這些任務增加指定輸出文件的能力,使得我們不僅可以通過 來指定源文件集,更可以通過各種不同功能的 mapper,來實現(xiàn)重新命名輸出文件文件名或更改輸出文件目錄結構的能力,這在構建持續(xù)集成環(huán)境中起到了極為靈活的作用,
11、很好的理解這兩個概念有助于寫出簡單而功能全面的 ant 腳本。Taskdef另外,在一個復雜的持續(xù)集成環(huán)境中,我們不可避免地會涉及一些商業(yè)產(chǎn)品或者開源項目來搭建整個環(huán)境,比如使用 CVS,SVN 或 IBM ClearCase 作為項目源代碼庫,使用 Apache Tomcat,IBM WebSphere Application 作為測試或產(chǎn)品環(huán)境的部署服務器,使用 LiquiBase,DBdeploy 作為產(chǎn)品數(shù)據(jù)庫的持續(xù)重構工具等。而 Ant 借助其易擴展的特性,對所有這些工具提供了很好的支持,外部工具的提供者只要實現(xiàn)特定的 Ant 任務接口,就可以提供自定義的 Ant 任務,我們只需要通
12、過 任務引入這些特定的 Ant 任務,便可以實現(xiàn)與這些工具的連接,實現(xiàn)通過 Ant 腳本來管理整個集成環(huán)境的目的。實現(xiàn)一個基本的持續(xù)集成環(huán)境在一個典型的線上 Web 2.0 應用的迭代開發(fā)周期中,持續(xù)集成通常涉及構建、部署、測試和上線等一系列動作,而這些動作能夠自動運行的前提是獲取各自需要的產(chǎn)品包(比如基于 Java EE 的產(chǎn)品都須提供的 WAR 或 EAR 文件)。因此,在構建服務器上調(diào)用一個綜合性的 Ant 構建腳本(清單 1),產(chǎn)生其它動作所需要的產(chǎn)品包,則成為整個持續(xù)集成過程中最為核心的一步。清單 1. 產(chǎn)生其它動作所需要的產(chǎn)品包不難看出, 任務通過調(diào)用不同的任務組合達到了為不同構建
13、目的提供不同構建動作的目的,其中包括對“冒煙”測試,功能測試以及產(chǎn)品環(huán)境安裝的特定支持,而各個環(huán)境所需要的產(chǎn)品包也因 任務目標的不同而不同,這種松散組合的方式為今后腳本的維護和更新提供了良好的基礎。在為產(chǎn)品環(huán)境提供產(chǎn)品包(perform_productBuild)的目標中, 擴展任務通過調(diào)用外部的 checkLicese.xml 腳本來對產(chǎn)品進行版權核查,任何沒有版權信息的文本文件都將被記錄到 reportFile 中。雖然類似的這種功能可以使用多種腳本語言來方便的實現(xiàn),比如 Python 和 Ruby 等,但這里給出了基于 Ant 的實現(xiàn),以更好的展示 Ant 腳本的靈活性和可編程性。清單 2 是使用 Ant 實現(xiàn)版權信息檢查的部分腳本。清單 2. 使用 Ant 實現(xiàn)版權信息檢查的部分腳本對于測試環(huán)境和產(chǎn)品環(huán)境而言,獲取產(chǎn)品包并自動的進行產(chǎn)品部署是兩者共同的首要工作,而這個過程中所面臨的主要問題通常涉及不同操作系統(tǒng)的腳本移植性問題。幸好,Ant 具備了良好的跨平臺能力,我們不必為不同的部署環(huán)境(Windows 或 Linux)去編寫不同的部署腳本,只需將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題開題報告:帶一路國家教育合作研究
- 課題開題報告:大學生設計專業(yè)大賽與專業(yè)教學研究
- 鞣料及鞣料制劑企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 鎢酸鈣企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 中藥材種植智能施肥機行業(yè)跨境出海戰(zhàn)略研究報告
- 包裝設備采購合同示例
- 醫(yī)學級維生素A抗皺霜行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 定制家具訂購合同
- 二零二五年度員工試用期試用期員工勞動合同終止后競業(yè)禁止協(xié)議
- 銻企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 網(wǎng)課智慧樹知道《老年醫(yī)學概論(浙江大學)》章節(jié)測試答案
- 車輛保險登記臺賬參考模板范本
- 三年級下冊數(shù)學教案-速度、時間和路程 滬教版
- 礦山道路施工組織設計方案
- 徽派建筑PPT江西婺源
- 正弦函數(shù)的圖像與性質優(yōu)秀課件
- 山東省任氏宗親分布村落
- 北師大版小學數(shù)學五年級下冊《有趣的折疊》說課稿
- 陜西省建設工程長安杯獎省優(yōu)質工程結構備案和復查的要求
- 典型示功圖分析(全)
- 水生觀賞動物鑒賞與維護課程
評論
0/150
提交評論