程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> WebSphere >> 基於Agile模式的WebSphere Commerce產品的自動化構建與部署框架(3)

基於Agile模式的WebSphere Commerce產品的自動化構建與部署框架(3)

編輯:WebSphere

使用 WebSphere Commerce Build and Deployment Tool 部署增量代碼包

WAS 的部署機制

通過 WCBD 來部署定制化的資源時,WCBD 將調用本地 WAS 接口,通過遠程連接 協議與 Remote 端的 WAS 進行通信,並調用遠程 WAS 的部署機制進行部署,因此了解 WAS 的部署機制將有 助於讀者從本質上了解如何部署增量代碼包。WAS 包含三種部署模式:單文件模式、多文件模式和模塊文件模 式。針對不同的模式,使用不同的打包方式打包資源。在 WAS 的 Administrative Console 界面中可以找到 這三種部署模式的 GUI 界面。本文將指導讀者通過配置 WCBD,以命令行的方式實現運行在 WAS 環境下的應 用的部署。下面就 WAS 所支持的三種部署模式進行簡單介紹。

單文件模式 (single file)

該 模式適用於只是在應用中更新單個文件。單文件可以是 EAR 中的任何文件,也可以是包含了若干 Command, Data Bean 的 JAR 包,或者是更新的 JAVA 代碼,只要這些文件在 EAR 中是以 JAR 包的形式存在,就可以 考慮使用單文件部署。需要注意的是,文件不能是應用模塊文件類型,例如 EJB 模塊或者 Web 模塊。

多文件模式 (partial application)

該模式適用於在應用中更新或者刪除多個單文件。這些文 件並不需要來自於同一個模塊。通過多文件模式進行部署時,如果在 WAS 中不存在該文件,該文件將會被添 加。如果文件已經存在,該文件會被更新。在多文件部署模式中,所有的資源均會被集中起來並按照各自的目 錄結構放置在一個壓縮文件中。打包多個應用文件包括如下三個階段:

創建一個目錄用來包含所有需要部署的資源,該目錄將代表 EAR 的根目錄。

收集所有需要部署的資源,並將其放置在新創建的根目錄下。資源在該目錄下的目錄結構必須與其在 JAVA EE 應用中的目錄結構保持一致。

將所有的資源打包成一個單獨的壓縮文件 (.zip 格式 )

模塊文件模式 (Module file)

該模式適用於在應用中增加,更新,或者刪除一個模塊。例如更新一 個實體的 EJB 模塊或者更新 WAR 包。

WCBD 的部署腳本中采用了多文件模式和模塊文件模式的部署方 式,需要使用者在啟動部署前對 WCBD 進行相關的配置。本文將指導讀者自定義 WCBD 腳本,將自動化構建模 塊生成的二進制增量代碼整合到 WCBD 的部署腳本中,實現自動化部署。接下來我們就如何配置 WCBD 以及如 何將 WCBD 整合到自動化框架中進行介紹。

整合自動化構建框架與 WCBD

自動化構建框架為 WCBD 創建了用於部署的資源,WCBD 將獲取生成的資源包,並通過調用 WAS 的部署機 制實現資源的部署,其運行過程如圖 1 所示。為了實現自動化構建框架與 WCBD 的整合,並實現增量代碼的 自動化部署,需要實現如下步驟:

獲取 WCBD 部署腳本。以該腳本為基礎,修改成自動化框架的部署模塊。

配置 WCBD 部署包。預先設置好部署的相關參數用於之後的代碼部署。

修改 WCBD 部署腳本。將自動化構建框架生成的增量代碼包整合到 WCBD 的部署腳本中,並讓構建框架主 任務能夠啟動 WCBD 部署過程,實現自動化的代碼部署。

圖 1. 構建模塊與部署模塊運行框架圖

創建 WCBD 部署包

為了實現增量代碼的 WCBD 部署,需要獲得一個 WCBD 部署包,並對其進行局部的修改,將其與自動化構 建框架進行整合。一旦配置和修改完成後,這將作為 WCBD 框架模板使用。WCBD 部署腳本分為 Server 環境 和 Toolkit 環境兩個版本。本文只介紹 Server 運行環境的部署,對於 Toolkit 環境,讀者可參考 Server 運行環境進行配置。Server 環境的部署腳本存放在 <WebSphere Commerce Install>/wcbd/deploy/server 路徑下。其目錄結構如下圖 2 所示。

圖 2 . WCBD 部署 包結構圖

讀者需要自己創建如下文件和目錄 如圖 2 中紅框所示:

創建 lib 目錄,並拷貝 <WebSphere Commerce Install>/wcbd/lib 下的 icu4j.jar; wcbd.jar; wcbd-ant.jar 三個 JAR 包到新創建的目錄下。

創建 source 目錄,該目錄主要保存用於部署的資源。但在本文中,只需要保持此目錄為空即可。

創建 wcbd-build-info.properties.template 文件,並在文件中添加如下內容用於記錄當前部署代碼的版 本信息。這些信息由構建模塊傳遞至部署模塊,每次部署時都需要通過 Ant 腳本對其中的標記符號進行替換 ,並生成 wcbd-build.info.properties 文件。該文件在部署過程中將被部署腳本加載,用於獲取部署資源的 構建版本等信息。

build.label=@buildlabel@

build.date=@builddate@

wcbd.version=@version@

配置 WCBD 用於部署

為保證 WCBD 部署功能覆蓋的全面性,代碼模板中已經包含了完整的部署配置項,在配置 WCBD 部署腳本 時,使用者需要根據自己的需求修改一些模板文件並配置其中的內容。這往往給使用者造成了很大的困惑,如 此多的配置項和模板文件是否都需要呢?答案是否定的。使用者在了解了 WCBD 的運行機制之後,完全可以根 據自己的實際情況有選擇性地選擇模板文件進行配置,對於無需配置的內容可以不去理會。WCBD 腳本在執行 時已經加入了容錯機制,會自動判斷是否達到執行條件,如果不滿足將會跳過,不會對之後的步驟產生影響。 表 1 中就這些必須進行修改的文件進行了介紹。

在必須要修 改或者配置的腳本文件中,deploy-autobuild.properties 是控制 WCBD 腳本運行的核心配置文件,在 deploy-autobuild.properties 文件中屬性被分成若干部分,如圖 3 所示。

圖 3. WCBD 屬 性配置文件結構圖

圖中藍色片段為必須設置的 Properties 屬性,綠色部分顯示的為可選擇性配置的 Properties 屬性。對於必須配置的屬性,在表 2 中分 別對其進行介紹 ( 以下為遠程部署模式的設置,對於本地部署,將屬性值改為參數即可 ):

表 2 . WCBD 部署腳本配置

修改 WCBD 部署腳本用於部署增量 代碼包

WCBD 原本是可獨立運行的工具,本文將其作為部署模塊使用。為了實現構建與部署的自動化, 需要對 WCBD 腳本進行修改,將其整合到構建腳本的主任務當中並只針對增量代碼進行處理。為此需要進行下 面幾步:

注銷不必要的任務

WCBD 部署腳本中默認打開了較多的資源部署功能。盡管 WCBD 有 很好的容錯機制,能夠判斷執行條件是否符合,從而決定是否執行某個操作,但是為了更大程度的提高效率, 且本文只針對於 EAR 下的增量代碼進行更新,我們可以考慮暫時關閉不必要的步驟,從而提高腳本執行效率 。讀者可在 Ant 腳本中將一些執行步驟注釋掉或者在 Ant 腳本的屬性配置文件中將其設置為 false。這裡只 介紹在屬性配置文件中的設置。具體方法是:打開 <wcbd_deploy_package>/ deploy- autobuild.properties 將清單 1 中的所有屬性設置成 false。當然讀者可以根據配置文件中的屬性名在執行 腳本中將對應的任務注釋掉。

清單 1. 注銷不必要的任務

run.dataload.sql.common=false
run.dataload.xml.common=false
run.dataload.dataload.common=false
run.dataload.acug.common=false
run.dataload.acp.common=false
run.dataload.acpnls.common=false
run.dataload.sql.target=false
run.dataload.xml.target=false
run.dataload.dataload.target=false
run.dataload.acug.target=false
run.dataload.acp.target=false
run.dataload.acpnls.target=false
    
run.static.web.deploy=false
run.wc.server.sync=false
run.dataload.cust.deploy=false

實現構建模塊與 WCBD 部署模塊的整合

打開 <wcbd_deploy_package>/ wcbd-deploy-common.xml, 定位到 <target name="build.partial.app">,加入圖 4 中標記的 Ant 腳本片段。

圖 4. 修 改 WCBD 腳本截圖

打開 <wcbd_deploy_package>/ deploy-autobuild.properties,定位到"General WCBD server deployment properties"屬性配置區域如圖 5 所示。

圖 5. WCBD property 文 件截圖

<img width="" height="" " src="http://img.ddvip.com/2013/0902/201309020607355415.png"/>

在該區域的最後加上 一行 "autobuild=",該屬性值設置為自動構建框架生成的增量代碼包所在路徑。例如本系列第 2 部分中,將生成的完成 Delta 比較並提取出來的增量代碼,按照其工程中的相對路徑重新存儲在新建目錄 partialApp 中,則該屬性設置為:autobuild=C:\\autobuild\\partialApp。如果在代碼構建中最終生成的是 包含 了增量代碼集合的 partialApp.zip,則需要先將此文件解壓到特定目錄,然後將該目錄設置為 "autobuild="的參數值。

在完成以上 WCBD 腳本的修改後,還需要在構建模塊的主任務中 加入啟動 WCBD 的子任務。具體方法為:打開自動化構建腳本中的 build.xml 文件,定位到 "runtaregets" 標簽,在該 target 的標簽內的最後一行加入子任務"startDeployedBuild "和"generateBuildInfo"的調用代碼 ,並在框架主任務所在 Project 中加入新的子任務 "startDeployedBuild " 和"generateBuildInfo",如清單 2 所示。

清單 2.  WCBD 腳本定制代碼

<target name="runtargets">
..............
<antcall target="generateBuildInfo"/>
<antcall target="startDeployedBuild "/>
</target>
<target name="startDeployedBuild">
<exec dir="${wcbd.deploy.path}" executable="${wcbd.deploy.path }/wcbd.bat" />
<arg value="-buildfile"/>
<arg value="wcbd-deploy.xml"/>
<arg value="-Dtarget.env"/>
<arg value="autobuild"/>
</exec>
</target>
<target name="generateBuildInfo">
<delete file="${wcbd.deploy.path}"\wcbd-build-info.properties"/>
<copyfile src="${wcbd.deploy.path}"\wcbd-build-info.properties.template"
dest="${wcbd.deploy.path}"\wcbd-build-info.properties"/>
<replace file="${wcbd.deploy.path}"\wcbd-build-info.properties">
<replacefilter token="@buildlable@" value="${build.lable}"/>
<replacefilter token="@builddate@" value="${build.date}"/>
<replacefilter token="@version@" value="${version }"/>
</replace>
</target>

打開 build.properties,加入屬性值  wcbd.deploy.path=<wcbd deploy package path>

通過以上的配置和腳本的修改,讀者已經完成了將 WCBD 整合到自動化構建框架中 的步驟。在讀者完成剩余代碼的編寫之後,主任務就可調用配置好的 WCBD 部署腳本,將構建模塊生成的增量 代碼包部署到配置好的運行環境上。

結束語

基於 Agile 模式的 WebSphere Commerce 產品的的自動化構建與部署框架到這裡就介紹完了。讀者通過對 各章節的閱讀,在頭腦中已經對整個框架有了一個全面的了解。由於各種產品的情況不盡相同,因此本框架也 是開放性的,在部分環節並沒有給出具體實現代碼,只是展示一種思路。讀者可以根據自己的實際情況進行補 充和完善。同時由於腳本語言的粘合性,讀者可以繼續進行擴展,例如可以將自動化測試工具整合到該框架中 ,從而實現了代碼構建、部署和測試的自動化,縮短代碼的開發和測試周期。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved