視訊:DevOps 與 WebSphere Liberty 伺服器

下列文字稿適用於 DevOps with WebSphere® Liberty Server 視訊,其中示範如何使用 Liberty 伺服器 DevOps 及部分開放程式碼工具來開發、建置及部署應用程式。 此文字稿是視訊的分鏡腳本。 「音訊」說明旁白和標題。 「螢幕動作」說明視訊中顯示的內容。

影片 Demo-DevOps with WebSphere Liberty Server

表 1. 標題頁面 顯示標題,然後顯示建置、更新、測試和部署應用程式的基本概觀。
場景 音訊 螢幕動作
1 此展示將顯示如何提供使用 WebSphere Liberty Server 及一組一般開放程式碼工具來建置及部署應用程式的功能。 顯示標題 Demo-DevOps with WebSphere Liberty Server
2 您將使用 Git 來進行來源控制,使用 WebSphere Application Server Developer Tools 來開發應用程式,並使用 Maven 來進行建置。 顯示 1 的影像。 使用下列選項的開發及建置應用程式
  • Git
  • WebSphere Developer Tools (WDT)
  • Maven
3 您也會對正在 Liberty 中執行的 Web 應用程式進行變更,並將所做的變更從 Eclipse IDE 推送到正式作業環境。 顯示 2 的影像。 更新使用 WDT 的應用程式
4 您將搭配使用 Apache Maven 與 WebSphere Liberty Maven 外掛程式來執行整合測試,以驗證您的變更。 顯示 3 的影像。 使用 Liberty Maven 外掛程式來測試應用程式
5 此外,您也將利用 Jenkins 進行連續整合。 顯示 4 的影像。 使用 Jenkins的 Continuous Integration
6 您將使用 Chef,將新建置推送到正式作業環境。

Liberty 將是所有先前的 DevOps 實務範例的 Java™ Platform, Enterprise Edition 執行時期。 在這項示範中,我們將使用航空應用程式 - AcmeAir 作為範例。 它將示範可控制且重複性極高的 DevOps 實務。

顯示 5 的影像。 使用 Chef 的連續部署
表 2. 示範如何開發和建置應用程式
場景 音訊 螢幕動作
7 現在,我們開始第一項實務:開發和建置應用程式。

開啟 Eclipse,其中已預先安裝了 WDT。

  1. 我們將設定工作區喜好設定,以便與 Maven 搭配使用。
  2. 之後,我們將複製含有 AcmeAir 應用程式的 Git 儲存庫,請指定 Git 儲存庫 URI。
  3. 之後,我們將匯入一組以 Maven 為基礎的 AcmeAir 專案:這個儲存庫含有 5 個以 Maven 為基礎的專案。
  4. 現在,我們可以執行 Maven 建置,以建置專案並建立應用程式構件。 當完成時,請確定建置成功。
  5. 現在,我們可以建立一部 Liberty 伺服器,以便從 Eclipse 執行應用程式:因此,請指定 Liberty 安裝目錄。
  6. 此外,也請指定 Liberty 伺服器名稱。
  7. 之後,我們可以開啟 server.xml,配置伺服器來執行我們的 AcmeAir 應用程式。
    • 首先,我們要指定 <httpEndpoint> 端點。
    • 我們也將新增資料庫配置,讓它參照應用程式資料的 Derby 資料庫。
  8. 啟動 WebSphere Liberty 伺服器和 AcmeAir 應用程式。
  9. 現在,請登入及體驗應用程式。
  10. 您可以選取您的目的地和出發城市。 請檢查及預訂可用的機票。
顯示「步驟 1 開發和建置應用程式」標題。

示範顯示下列步驟,以使用 WDT 來開發和建置應用程式。

開啟 Eclipse,其中已預先安裝了 WDT。

  1. 設定工作區喜好設定,以便與 Maven 搭配使用。 按一下設定所有 Maven 值按鈕。
  2. 我們將指定 Git 儲存庫 URI 來複製含有 AcmeAir 應用程式的 Git 儲存庫。
  3. 匯入一組以 Maven 為基礎的 AcmeAir 專案:acmeair 儲存庫含有 5 個以 Maven 為基礎的專案。
  4. 現在,執行 Maven,以建置專案並建立應用程式構件。 當建置完成時,請確定其成功。
  5. 現在,我們可以建立 WebSphere Liberty 伺服器,以便從 Eclipse執行應用程式: 指定 Liberty 安裝目錄。
  6. 將伺服器命名為 AcmeAirDemo,並在其中新增 acmeair-webapp 應用程式。
  7. 開啟伺服器配置 server.xml 檔,以針對這項服務配置 Liberty 伺服器。
    • 取代 <httpEndpoint> 元素,並新增進一步的配置。
    • 新增資料庫配置,使其參照應用程式資料的 Derby 資料庫。
  8. 啟動 WebSphere Liberty 伺服器和 AcmeAir 應用程式。
  9. 按一下應用程式 URL,驗證應用程式處於作用中。 載入航班資料集,以起始設定應用程式。
  10. 現在 AcmeAir 已備妥可供使用。
    • 登入應用程式並按一下 Flights 動作,然後在 New York 中鍵入 Leave FromParis 下的 Arrive At
    • 按一下尋找航班瀏覽航班按鈕。
    • 挑選任何離境航班,並且點選它。
    • 挑選任何回航航班,並且點選它。
    • 按一下預訂選取航班按鈕。
表 3. 示範如何更新應用程式
場景 音訊 螢幕動作
8

在實務 2 中,我們將快速變更應用程式,顯示如何進行其連續交付。 為了簡化實務,我們只會對已編製索引的頁面進行極小的變更。 將部分強調顯示的內容取代為 "Welcome to Acme Air"。 現在,在您儲存這些變更之後,即可重新整理,您會發現變更已生效。

顯示「步驟 2 更新應用程式」標題

示範顯示應用程式中正在更新的「索引」頁面。

表 4. 示範如何測試應用程式
場景 音訊 螢幕動作
9 之後,我們將利用 Maven 和 Liberty Maven 外掛程式來進行整合測試。
  1. AcmeAir 應用程式有一個 acmeair-itests 專案,內含一些整合測試。
  2. 為了啟用整合測試,我們需要編輯 pom.xml 檔。 我們需要在這裡進行少量變更,但最重要的一項是,我們將啟用及配置 Liberty Maven 外掛程式,以便在執行整合測試之前啟動 Liberty 伺服器,在測試完成之後停止伺服器。
  3. 我們將建立一項執行配置,以進行 AcmeAir 整合測試。
    • 按一下執行按鈕,以執行整合測試。 測試需要幾分鐘才能完成。 因此,它已建置成功。
    • 檢查主控台輸出,看看 Liberty Maven 外掛程式是否在執行測試之前啟動伺服器,在測試之後停止伺服器。
  4. 您可以檢視測試報告,確定結果沒有錯誤。
  5. 之後,我們會將 pom.xml 變更推送至 Git,以便在 Jenkins 建置中執行 itests
示範如何使用下列步驟來測試應用程式
  1. AcmeAir 應用程式有一個 acmeair-itests 專案,內含一些整合測試。
  2. 編輯 acmeair-itests/pom.xml 檔,以啟動整合測試。
  3. 啟用 Build Helper Maven 外掛程式,以尋找可用的網路埠。
  4. 啟用和配置 Liberty Maven 外掛程式,以便在執行整合測試之前,啟動 Liberty 伺服器,並在測試完成之後停止伺服器。
  5. 啟用和配置 Maven Failsafe 外掛程式,以執行整合測試。 測試將演練應用程式的 REST API
  6. 建立一項執行配置,以進行 AcmeAir 整合測試。
    • 按一下執行按鈕,以執行整合測試。 測試應順利完成。
    • 檢查主控台輸出,看看 Liberty Maven 外掛程式是否在執行測試之前啟動伺服器。
    • 檢查主控台輸出,看看 Liberty Maven 外掛程式是否在測試之後停止伺服器。
  7. 檢視 target/failsafe-reports/ 目錄之下的測試報告。
  8. pom.xml 變更推送到 Git,使 itests 能夠在 Jenkins 建置中執行。
表 5. 示範如何使用 Jenkins 進行連續整合
場景 音訊 螢幕動作
10 日
  1. 在下一個實務中,我們將利用 Jenkins 來建立和執行 AcmeAir 應用程式的建置工作。 此工作會從 Git 移出應用程式碼、編譯應用程式、執行測試,並發佈建置構件。 藉由 Schedule 中的配置,此工作每兩分鐘輪詢一次 Git 儲存庫,若有偵測到變更,就會自動啟動建置。
    • 指定 Liberty 安裝目錄。
    • 此外,我們也將新增一項後建置動作,然後選擇保存構件
    • 在一到兩分鐘之後,應會自動開始建置。
  2. 一旦建置完成並且成功,請檢查建置工作結果。 測試結果應該會指出沒有失敗。
  3. 切換回到 Eclipse,並確定在「索引」頁面上所做的變更。
  4. 切換回 Jenkins,在兩分鐘內,新的建置應會出現在建置歷程表格之下。
顯示「步驟 4 連續整合」標題

示範如何使用下列步驟,利用 Jenkins 進行連續整合:

  1. 我們將使用 Jenkins 來建立和執行 AcmeAir 應用程式的建置工作。 此工作會從 Git 移出應用程式碼、編譯應用程式、執行測試,並發佈建置構件。 藉由 Schedule 中的配置,此工作每兩分鐘輪詢一次 Git 儲存庫,若有偵測到變更,就會自動啟動建置。
    • 我們將按一下新增後建置動作按鈕,並選擇保存構件
    • 在一到兩分鐘之後,應會自動開始建置。
  2. 一旦建置完成並且成功,請檢查建置工作結果。 acmeair-webapp-1.0-SNAPSHOT.war 檔應出現在 建置構件之下,且測試結果應會指出無失敗狀況。
  3. 切換回到 Eclipse,並確定在「索引」頁面上所做的變更。
  4. 切換至 Firefox,並前往 http://server:9080/jenkins/job/AcmeAir tests/ 位址。 在兩分鐘內,新的建置應會出現在建置歷程表格之下。
    • 按一下新建置,並驗證變更之下出現正確的確定訊息。
表 6. 示範如何使用 Chef 進行連續部署
場景 音訊 螢幕動作
11 日
  1. 在最後一個實務中,我們將進行 Chef 的連續部署。
    • 開啟終端機視窗。
    • 建立空的錦囊妙計。
    • 編輯錦囊妙計的 meta 資料檔
    • 編輯秘訣檔案
    • AcmeAir 錦囊妙計上傳至 Chef 伺服器
  2. 此外,也請在 Chef 伺服器中登錄 template 節點。
  3. 您可以在 Chef 伺服器上配置 template 節點配置。
  4. 之後,您可以移入 Chef 節點。 這會導致 chef-client 指令在 template 節點上執行。 AcmeAir 應用程式應已充分部署,並在 template 節點上執行。 如果要驗證,請切換至 Firefox,並開啟 template 應用程式伺服器來檢查結果。
  5. 然後,只有在所有整合測試都通過之後,我們才會建立新的 Jenkins 建置工作,以便在 template 節點上呼叫 chef-client 來更新它。
    • 在 Jenkins 主控台中,編輯 AcmeAir tests 工作。
    • 後建置動作之下,按一下新增後建置動作,並選擇建置其他專案
    • 要建置的專案之下,輸入 AcmeAir-Chef
    • 要求一項 AcmeAir tests 建置,以確認 AcmeAir tests 工作會觸發 AcmeAir-Chef 工作。

我們只是示範如何使用 Liberty 和一般開放程式碼工具來演練 DevOps。 現在,您可以嘗試全部一起重複執行的完整端對端 DevOps 實務。 在此展示中,我們選擇 Chef、WDT、Maven 及 Jenkins,這些技術可與其他 DevOps 工具 (例如 uDeploy®、Puppet 等) 輕鬆交換,謝謝您觀看。

顯示「步驟 5 連續部署」標題

示範如何使用下列步驟,利用 Chef 進行連續部署:

  1. 建立錦囊妙計來部署 AcmeAir
    • 開啟終端機視窗。
    • 建立空的錦囊妙計。
    • 編輯錦囊妙計的 meta 資料檔
    • 編輯 default.rb 秘訣檔
    • AcmeAir 錦囊妙計上傳至 Chef 伺服器
  2. 引導 Chef 節點,並向 Chef 伺服器登錄 template 節點。
  3. 在 Chef 伺服器上配置 template 節點配置。
  4. 移入 Chef 節點。 執行 knife ssh name:template sudo chef-client 指令。 這會導致 chef-client 指令在 template 節點上執行。 Chef-client 會對該節點執行一組錦囊妙計。 AcmeAir 應用程式應已充分部署,並在 template 節點上執行。 如果要驗證,請切換至 Firefox,並開啟 http://template:9081/acmeair/ 位址。
  5. Jenkins 會自動移入 Chef 節點。 只有在所有整合測試通過之後,我們才會建立新的 Jenkins 建置工作,它會在 template 節點上呼叫 chef-client 來更新它。
    • 在 Jenkins 主控台中,編輯 AcmeAir tests 工作。
    • 後建置動作之下,按一下新增後建置動作,並選擇建置其他專案
    • 要建置的專案之下,輸入 AcmeAir-Chef
    • 藉由要求新的 AcmeAir tests 建置,來驗證 AcmeAir tests 工作會觸發 AcmeAir-Chef 工作。