使用 Oracle Cloud Infrastructure DevOps 服務建立連續整合與部署管線
快速交付軟體是有效率地在雲端建置和部署應用系統的主要原因。Oracle Cloud Infrastructure (OCI) DevOps 服務提供持續整合與部署 (CI/CD) 平台,讓開發者能夠在 Oracle Cloud 上輕鬆建置、測試及部署軟體和應用系統。
OCI DevOps 建置及部署管線可減少變更導向錯誤,並減少客戶花在建立和修正問題的時間,讓軟體得以重建,並在套用變更後進行擷取,因此可早發現任何不利影響。
此服務包括提供私人 GIT 儲存區域以儲存您的程式碼,並支援與外部程式碼儲存區域的連線,以保存原始程式碼和組態檔。由於組建流程取決於並產生中介使用者自建物件 (模組、套裝程式等等),因此它們也會與 Oracle 的使用者自建物件和容器儲存區域搭配運作。不論要將工作負載移轉至 OCI (從內部部署或其他雲端),還是在 OCI 上開發新應用程式,都可以使用 OCI DevOps 來簡化軟體傳遞生命週期。
在混合式或多重雲端環境中作業時,可以使用 OCI DevOps 建立要部署在其他環境中的使用者自建物件。
架構
組建管線會依照使用者定義的流程來建立和測試軟體,然後使用最新版本的應用程式建立容器映像檔。組建的輸出會以影像形式儲存在容器登錄中。接著,部署管線會使用容器登錄和 Kubernetes 資訊清單中建立的映像檔,將最新版本的應用程式部署到 OKE。
提供的管線不會考量使用靜態程式碼分析和滑鼠工具,例如套用單位測試及分析程式碼品質。
下圖說明此參考架構。

deploy-pipeline-devops-arch.png 圖解描述
deploy-pipeline-devops-arch-oracle.zip
- 區域
OCI 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。架構使用單一區域。
- DevOps 專案
導入 CI/CD 工作流程所需的 DevOps 資源邏輯群組。DevOps 資源可以是使用者自建物件、建立管線、部署管線、外部連線、觸發程式以及環境。DevOps 專案可讓您輕鬆啟用所有 DevOps 資源的記錄日誌、監督及通知。
- 組建管線
組建管線會從您的原始程式碼儲存區域取得一個確認 ID,並使用該原始程式碼來執行您的組建指示。組建管線定義組建處理作業的一組階段–組建、測試及編譯軟體使用者自建物件、將使用者自建物件傳遞至 OCI 儲存區域,以及選擇性觸發部署。您可以在組建規格檔案中定義組建執行的流程和指示。
- 代碼儲存庫
DevOps 服務代管的專用 Git 儲存區域。您可以使用 OCI DevOps 程式碼儲存區域來儲存、管理、開發原始程式碼。
- 部署管道
將一組使用者自建物件傳遞至目標環境的一系列步驟。您可以藉由定義可以循序或平行方式執行的階段,來控制軟體版本的流程和邏輯。
- 部署階段
階段是執行管線時所發生的個別動作。DevOps 部署管線包括下列預先定義的階段類型,供您在釋出處理作業中使用:
- 機動部署:OKE、函數或執行處理群組的增量版本
- 等待:等待 N 秒
- 手動核准:如果已核准,則繼續進行;如果核准遭拒,則停止。
- 呼叫函數:呼叫「函數」並傳送要求參數的使用者自建物件,以執行自訂作業或整合。
- DevOps 人工因素
DevOps 使用者自建物件是構成應用程式之任何檔案、二進位檔案、套裝程式、資訊清單或影像的參照或指標。建立構件時,通知 Oracle DevOps 有關實際構件的來源位置。DevOps 支援 OCI 容器映像檔登錄和 OCI 使用者自建物件登錄儲存區域。
- 人工因素儲存區域
「使用者自建物件儲存區域」會建立儲存區域來群組相似的使用者自建物件。建立儲存區域時,您可以將使用者自建物件上傳至該儲存區域。這些使用者自建物件是傳遞至目標部署環境的文字檔、二進位檔案及部署清單的集合。每個使用者自建物件都有由其 path:version 組成的名稱。路徑是用來組織人工因素的字串。
- OCI 記錄日誌與通知服務
OCI 日誌記錄服務會儲存與部署相關的日誌。建置程式實際執行輸出和建置的最終結果會顯示為日誌項目。OCI 通知服務可檢視部署專案及其資源的最新狀態,並採取任何必要的動作。例如,系統會在重要事件 (例如建置管線中等待核准的階段) 時通知您。當您收到通知訊息時,可以移至 DevOps 建置管線並核准階段。
- 建置環境
環境是部署使用者自建物件之客戶的運算資源集合。環境可以是功能、運算虛擬機器 (VM)、裸機執行處理或 OKE 叢集。
- Oracle Kubernetes 叢集 (OKE):OCI Container Engine for Kubernetes 是一項完全受管理、可擴展的高可用性服務,可用來將容器化應用系統部署到雲端。
- 運算執行處理:OCI 運算服務可讓您在雲端佈建及管理運算主機。您可以部署資源配置符合您 CPU、記憶體、網路頻寬以及儲存資源需求的運算執行處理。
- 函數:Oracle Functions 是一個完全受管理的多租用戶、高度可擴展、隨選、功能即服務平台。此服務是建立在企業級 Oracle Cloud Infrastructure 上,並由 Fn 專案開源引擎提供。
建議
- 運算資源配置
此架構使用 Oracle Linux 作業系統映像檔搭配 E3 或 E4 彈性資源配置。您可以從執行處理群組環境中的運算主機和 OKE 叢集節點所需的最低資源開始。如果您的應用程式需要更多的記憶體或核心,您可以選擇不同的資源配置。
- VCN
建立 VCN 時,請根據計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和各個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
此架構使用公用 VCN 代管 Container Engine for Kubernetes。您也可以使用專用 VCN。在此情況下,請使用 NAT 閘道透過公用網際網路授予叢集存取權。
- Oracle Container Engine for Kubernetes (OKE)
此架構會將 OKE 叢集部署為其中一個目標環境。工作節點部署在 E3 或 E4 Oracle Linux 作業系統上。此架構使用叢集中的三個工作節點,但是您最多可以在每個叢集上建立 1,000 個節點。
- 容器映像檔登錄
此架構會將登錄檔部署為專用 Docker 登錄檔以供內部使用。Docker 映像檔會推送至登錄,並從登錄提取。您也可以使用登錄檔作為公用 Docker 登錄檔,讓任何具有網際網路存取權的使用者和適當 URL 的知識,從 OCI 中的公用儲存區域提取影像。
注意事項
部署此參照架構時,請注意下列幾點:
- DevOps 支援 OKE、運算主機、函數的部署。
- 運算執行處理的執行處理群組部署只支援 Linux 主機。
- 要與 DevOps 一起部署的使用者自建物件必須在 OCI 使用者自建物件登錄或容器映像檔登錄儲存區域中。
- 最佳作法是將每個應用程式及其所有微服務群組為單一專案。
部署
GitHub 中提供使用 OCI DevOps 建立組建和部署管線的 Terraform 程式碼。
- 使用 Oracle Cloud Infrastructure Resource Manager 中的範例堆疊進行部署:
- 使用 Terraform CLI 部署:
- 前往 GitHub。
- 將儲存區域複製或下載到您的本機電腦。
- 依照 README 文件中的指示進行。