AWS 上的 CI/CD - AWS 上 5G 網路的持續整合與持續交付

AWS 上的 CI/CD

CI/CD 可以被描繪為管道,其中的新程式碼會在一端提交,經過一系列階段 (原始碼、建置、測試、暫存和生產) 測試,然後以生產就緒程式碼的形式發佈。

描述 AWS 程式碼管道範例的圖表

CICD 管道概觀

CI/CD 管道的每個階段都會在交付程序中以邏輯單元形式結構化。每個階段都可做為一個閘道,可檢查程式碼的特定面向。隨著程式碼在管道執行,我們會假設程式碼的品質在後期階段較高,因為它的更多面向將持續得到驗證。在早期階段發現的問題會阻止程式碼透過管道執行。測試的結果會立即傳送給團隊,而如果軟體未通過該階段,則所有進一步的建置和發行將會停止。

AWS 引入了一套完整的 CI/CD 開發人員工具,以加速軟體開發和發行週期。每次發生程式碼變更時,AWS CodePipeline 會根據定義的發行模型,將發行程序的建置、測試和部署階段自動化。這麼做可以實現快速且可靠地交付功能和更新。

程式碼管道可以與其他服務整合。這些可以是 AWS 服務,例如 Amazon Simple Storage Service (Amazon S3),也可以是第三方產品,例如 GitHub。AWS CodePipeline 可以解決各種開發和作業使用案例,包括:

  • 使用 AWS CodeBuild 編譯、建置和測試程式碼

  • 將容器型應用程式持續交付至雲端

  • 網路服務或特定雲端原生網路功能所需的成品 (例如描述子和容器映像) 的部署前驗證

  • 容器化網路功能/虛擬網路功能 (CNF/VNF) 的功能、整合和效能測試,包括基準測試和迴歸測試

  • 可靠性和災難復原 (DR) 測試。

描述 AWS CICD 管道元件的圖表

AWS CICD 管道元件

AWS 可以使用以下 AWS 開發人員工具來設定 CI/CD 管道:

CI/CD 管道可以使用 AWS CDKAWS CloudFormation 自動建立。在 NFV 網域中,此 AWS 原生自動化可以整合到管理和協同運作 (MANO) 架構以及 CSP 的服務協同運作架構中。

CI/CD 程序包含以下步驟:

  • 網路設定 - AWS CDK 和 AWS CloudFormation 會起始網路先決條件的建立:

  • 基礎設施部署 - AWS CDK 和 AWS CloudFormation 會起始下列資源堆疊的建立:

  • 雲端網路功能 (CNF) 部署 - 在此階段中,CNF 會使用 Kubectl 和 Helm Chart 工具部署到 EKS 叢集上。此階段還可以部署 CNF 所需的任何特定應用程式或工具以有效率地工作 (例如 PrometheusFluentd)。CNF 可以透過 Lambda 函數或使用 AWS CodeBuild 部署。

  • 持續更新和部署 - 這些疊代執行的一系列步驟,用於部署會導致升級的容器/組態變更的部分變更。與 CNF 部署案例類似,可以使用 AWS 服務搭配來自 AWS CodeCommitAmazon Elastic Container Registry (Amazon ECR) 或第三方來源系統 (如 GitLab Webhooks) 的觸發程序,將持續更新和部署自動化。

描述 AWS CICD 管道流程的圖表。

AWS CICD 管道流程圖表

CI/CD 管道是使用 AWS CodePipeline 建置,並利用可建立模型、視覺化和自動化發佈軟體所需的步驟的持續交付服務。透過定義管道中的階段,您可以從原始程式碼儲存庫擷取程式碼,將該原始程式碼建置到可發行的成品中,測試該成品,然後將其部署到生產。只能部署成功通過這些階段的程式碼。您可以選擇將其他需求新增到您的管道中,例如,手動核准,以協助確保僅有已核准的變更會部署到生產環境中。