開發應用程式並部署至虛擬機器

DevOps Insights 將於 2026 年 8 月 31 日結束服務並停止運作。Continuous Delivery 將於 2027 年 2 月 12 日在以下地區停止運作:au-sydca-torus-east。 Code Risk Analyzer 也將於該日於所有地區停止提供服務。 若某個區域未實際使用這些功能,該區域中的功能可能會提前停用,並停止接受新的實例。 了解更多

本教學示範如何設定 Continuous Delivery 工具鏈,並將簡單的應用程式 (app) 傳送至虛擬機器。 您可以設定版本控制,接著進行建置、測試,並將程式碼部署至不同的部署階段。

依預設,工具鏈會使用範例 Maven 型 Java Hello World 應用程式,但您也可以改用自己的應用程式並鏈結至它。 此工具鏈已配置管線以與 Code Risk Analyzer 進行持續整合及持續交付、來源控制、問題追蹤及線上編輯。

應用程式碼儲存在應用程式來源控制儲存庫 (repo) 中。 建置及部署 Script 儲存在管線來源控制儲存庫中。 您可以自訂建置及部署 Script,以符合應用程式的開發需求。

本指導教學中的工具鏈實作下列最佳作法:

  • 在每個 Git 確定上建置應用程式二進位檔,並根據建置號碼、時間戳記及可追蹤性的確定 ID 來設定標籤。
  • 自動將建置的二進位檔插入部署資訊清單中。
  • 建立 Object Storage 實例和儲存區,以儲存現成建置的暫時性二進位檔。 對於進階使用者,可以配置現有的 Artifactory 儲存庫,並與工具鏈整合,以支援建置構件的版本化,以達到可追蹤性及相符性目的。

工具鏈會實作三個管線,以建置應用程式碼並將其部署至虛擬機器。

  • 連續整合 (CI) 管線: 當變更合併至「應用程式原始碼」儲存庫的主要分支時,會觸發此管線。 「CI 管線」會在「應用程式原始碼」上執行「單元測試」、「程式碼涵蓋面」及「靜態掃描」。 「CI 管線」也會產生二進位建置構件,並將它上傳至工具鏈中所配置的 Object Storage 儲存區或 Artifactory。 而「CI 管線」會產生建置構件的 meta 資料,並將它儲存在「庫存」儲存庫中。

  • 連續部署 (CD) 管線: 此管線是由順利執行的「CI 管線」所觸發。 CD Pipeline 負責將建置構件部署至部署環境。 管線會透過執行性能檢查來驗證應用程式的成功部署,並在部署失敗時回復變更。

  • 取回要求 (PR) 管線: 在「應用程式原始碼儲存庫」中建立合併或取回要求時,會觸發此管線。 一般而言,此要求是由應用程式原始碼開發人員手動建立,以將其開發分支中的變更合併至主要分支或任何其他分支。 「PR 管線」會在「應用程式原始碼」上執行「單元測試」及「靜態掃描」。

架構圖
架構圖

開始之前

設定並配置工具鏈的虛擬伺服器實例,以將應用程式部署至虛擬伺服器實例。 您可以使用現有的「虛擬伺服器實例」,或設定符合下列需求的新「虛擬伺服器實例」:

  1. 在 IBM Cloud上設定虛擬伺服器實例
  2. 保留浮動 IP 位址,讓「虛擬伺服器實例」可透過公用網際網路存取。 或者,您可以使用可用的 DNS 項目。 本指導教學使用浮動 IP 位址。
  3. 為虛擬伺服器實例建立使用者 (最好是非特許) 及 SSH 金鑰
  4. 配置虛擬伺服器實例的 安全群組。 啟用工具鏈以在已部署應用程式上執行性能檢查,方法是新增 TCP 的入埠規則以容許埠 8080,讓它可以存取應用程式端點。 如需新增入埠規則的相關資訊,請參閱 管理安全群組
  5. 確保 Java™ SDK 已安裝在您的 VM 上,或使用下列指令安裝:yum install -y tar java
  6. 選用。 如果您需要在 Key Protect 中儲存密鑰,請執行值的 base64 編碼。 如需必要指令詳細資料的相關資訊,請參閱 映像檔簽署: 產生 GPG 金鑰

建立工具鏈

若要建立 開發虛擬機器的應用程式 工具鏈,請按一下

建立工具鏈

或者,從 IBM Cloud 主控台,按一下功能表圖示漢堡包圖示 > 平台自動化 > 工具鏈。 在工具鏈頁面上,按一下建立工具鏈。 在 「建立工具鏈」 頁面上,按一下 「為虛擬機器開發應用程式」。

配置簡式虛擬伺服器實例

  1. 建立 標籤中,檢閱預設值。

    工具鏈設定
    工具鏈設定

  2. 在 IBM Cloud 中,可透過工具鏈名稱來識別工具鏈。 如果您要使用不同的名稱,請變更工具鏈的名稱。 由於工具鏈名稱用於建構 URL,用於存取您的應用程式,因此請務必指定唯一的名稱。

  3. 依預設,工具鏈會在 Git Repos and Issue Tracking中建立來源儲存庫。 若要為Git來源儲存庫使用不同的提供者(例如GitHub或GitLab,請從可用儲存庫清單中選擇它。

    此工具鏈使用 Continuous Delivery 服務中包含的工具。 如果該服務的實例尚未在選取的資源群組中,則當您按一下 建立 以建立工具鏈時,會使用免費 Lite 方案自動新增該服務的實例。

配置應用程式儲存庫

  1. Git Repos and Issue Tracking 標籤中,檢閱指定應用程式原始碼位置的預設值。

  2. 依預設,工具鏈會使用範例 Maven 型 Java Hello World 應用程式。 您可以改為更新位置設定,以鏈結至您自己的應用程式。

    應用程式倉庫
    應用程式倉庫

配置庫存儲存庫

「庫存儲存庫」會儲存建置和構件的 meta 資料。 若要觸發管線以將確定中所說明的構件部署至「虛擬伺服器實例」,請確定至「庫存儲存庫」,然後執行接受作業。

工具鏈庫存回購
工具鏈庫存回購

設定 Delivery Pipeline

  1. 移至 Delivery Pipeline 標籤。

    Delivery Pipeline配置
    Delivery Pipeline配置

  2. 指定現有的 IBM Cloud API 金鑰或建立金鑰。 工具鏈會使用此金鑰與整合至工具鏈中的其他「雲端服務」互動。

  3. 指定執行「虛擬伺服器實例」的區域,例如 us-south

  4. 使用 aaa.bbb.ccc.ddd 格式指定虛擬伺服器實例的浮動 IP 位址。

  5. 選取 SSH Key 鑑別類型,並指定下列認證:

    • 使用者名稱: 具有部署及執行應用程式之許可權的「虛擬伺服器實例」使用者的使用者名稱。
    • SSH 金鑰: 用於執行及部署應用程式的使用者私密 SSH 金鑰。
  6. 執行下列指令,以在虛擬伺服器實例上為有權部署及執行應用程式的使用者建立新的金鑰組。

            # Create the SSH key
                `ssh-keygen -C cloud.ibm.com`
            # copy public key to the VSI
                `ssh-copy-id -i .ssh/id_rsa.pub <UserName>@<xx.yy.zz.aa>`
    

選用。 建立暫時性儲存體配置

對來源所做的任何變更都會觸發持續整合管線。 當連續整合執行成功時,會建立建置或二進位構件並儲存在暫時性儲存體中,然後部署至目標虛擬伺服器實例。

  1. 從工具鏈內的 其他工具 標籤中,您可以選擇使用 Object Storage 或 Artifactory 作為暫時性儲存體來儲存建置二進位檔。
  2. 如果您的帳戶不包含任何 Object Storage實例,則工具鏈會在預設資源群組中建立新的 Object Storage 實例。 接下來,工具鏈會建立與新 Object Storage 實例內工具鏈同名的儲存區。
  3. 如果您的帳戶已包含 Object Storage 實例,則工具鏈會使用其中一個實例來儲存暫時性建置構件。
  4. 若要配置 Object Storage 或 Artifactory 詳細資料,請參閱 配置進階使用者選項 一節。
  5. 按一下 建立 以建立工具鏈。

探索您的新工具鏈

建立工具鏈之後,它會在圖表中顯示屬於工具鏈一部分的每一個工具整合。

探索管線

您可以探索管線,以瞭解工具鏈流程以及在每一個管線內執行的不同作業。 例如,若要檢視多個步驟 (例如 cra-discovery-scan ) 以及「參數」及「狀態」的詳細資料,請按一下「CI 管線」工具整合,然後按一下 成功 PipelineRuns

CI PipelineRun詳細資訊
持續整合PipelineRun詳細資訊

探索 DevOps Insights

DevOps Insights 會從工具鏈聚集資料,以便您可以追蹤並改善端對端 DevOps 處理程序。 檢視品質度量值、追蹤建置和部署工作、檢視原則等等。

如果程式碼不符合或超出原則,則會停止部署,以防止釋出風險。 您可以使用 DevOps Insights 作為持續交付環境的安全網,或作為實作及改善品質標準的方式。

下圖所示的「品質儀表板」會針對每個應用程式提供各項品質資料集,例如單元測試、程式碼覆蓋率、功能驗證測試以及靜態安全性掃描等。

DevOps Insights品質儀表板
DevOps Insights品質儀表板

探索 GitOps

GitOps 是一組實務和工具,將 Git 置於 DevOps 工具鏈的中心,並作為在虛擬伺服器實例上部署之內容的事實來源。 借助GitOps,開發人員和操作人員可以使用熟悉的Git工作流程來定義、審查、批准和審計對其基礎設施和應用程式的變更。 自動化工具會負責將其目標的即時狀態與 Git中說明的所需狀態同步化。

透過使用本指導教學中的工具鏈,您可以透過為每個環境建立一個分支來控制對多個環境的部署。 當對「庫存」儲存庫的特定分支提出取回要求或確定時,下列範例工作流程會觸發 Continuous Delivery 管線。

  1. 透過提供虛擬伺服器實例的詳細資料 (例如應用程式儲存庫及 Object Storage),在 IBM Cloud 上建立虛擬伺服器實例的工具鏈。 請勿指定「庫存」儲存庫的任何詳細資料。
  2. 建立工具鏈之後,從「庫存」儲存庫建立多個分支,例如 DevStagingProd
  3. 按一下 Continuous Delivery 管線,並跳至觸發程式。 將觸發程式來源新增為具有您要觸發 CD-Pipeline (主要) 之分支的「庫存」儲存庫。
  4. 修改 Continuous Integration 管線,以在成功整合之後確定至個別庫存儲存庫。
  5. 在「庫存」儲存庫中有足夠的確定可用之後,請將儲存庫中的取回要求合併至主要伺服器,以啟動 Continuous Delivery 建置。

透過使用GitOps,您可以透過為每個環境建立一個分支來控制對多個環境的部署。

配置進階使用者選項

若要存取進階使用者選項,請移至 其他工具 標籤。

  • 指定現有的 Cloud Object Storage 實例來儲存暫時性建置構件:

    • 在您要儲存暫時性建置構件的 Object Storage 實例中指定儲存區名稱。 若要將物件上傳至儲存區,它必須位於建立工具鏈的相同地區中。

    • 選取對您指定的儲存區具有讀取權和寫入權的 API 金鑰。

    Cloud Object Storage詳細資訊
    Cloud Object Storage詳細資訊

  • 若要使用 Artifactory 帳戶來儲存暫時性建置構件,請指定 Artifactory 實例的詳細資料:

    • Artifactory 伺服器 : 的 伺服器 URL HTTPS URL Artifactory
    • 類型: 從 npm、maven 或 docker 中選擇
    • Artifactory UserID:登入Artifactory Server的使用者ID,格式為 xxx.xxx@xxx.com
    • Artifactory APIKey: 由使用者產生的 APIKey (現有或新建)
    • 釋出 URL:釋出 URL,用於存放工件的 Artifactory repo

Artifactory 中的某些欄位只有在使用 Artifactory 組態時才是必須填寫的。

Artifactory 整合詳情 整合詳情
Artifactory

按一下 建立 以建立工具鏈。 This process might take several minutes to complete.

選用。 回復至舊版已部署的應用程式

由於測試結果、程式碼品質問題及其他問題,您可能想要回復已部署的程式碼。 您可以使用「庫存儲存庫」來回復至舊版應用程式。

  1. 鍵入 git clone <inventory-repo-url>,以從管線複製並下載 Inventory Git 儲存庫。 Continuous Delivery 管線會接聽「庫存」儲存庫的主要分支。
  2. 鍵入 git log,以檢視 Continuous Integration 管線完成的確定清單。
  3. 輸入 git checkout master 以移出主要分支。
  4. 鍵入 lastCommitID=$(git log --format="%H" -n 1),以擷取儲存庫的前次確定 ID。
  5. 鍵入 git revert $lastCommitID,以透過回復現行變更來建立新的確定。 請確定您提供此回復的確定訊息。
  6. 鍵入 git push,將變更推送至「庫存」儲存庫,並啟動 Continuous Delivery 管線以進行應用程式部署。

下一步

雖然本指導教學使用範例 Java 應用程式,但您也可以在「虛擬伺服器實例」上部署其他語言型應用程式。 若要將不同的語言型應用程式部署至「虛擬伺服器實例」,請同時刪除您針對本指導教學建立的工具鏈及「虛擬伺服器實例」。