AWS 上的 CI/CD
CI/CD 可以被描繪為管道,其中的新程式碼會在一端提交,經過一系列階段 (原始碼、建置、測試、暫存和生產) 測試,然後以生產就緒程式碼的形式發佈。
![描述 AWS 程式碼管道範例的圖表](images/cicd_5g2.png)
CICD 管道概觀
CI/CD 管道的每個階段都會在交付程序中以邏輯單元形式結構化。每個階段都可做為一個閘道,可檢查程式碼的特定面向。隨著程式碼在管道執行,我們會假設程式碼的品質在後期階段較高,因為它的更多面向將持續得到驗證。在早期階段發現的問題會阻止程式碼透過管道執行。測試的結果會立即傳送給團隊,而如果軟體未通過該階段,則所有進一步的建置和發行將會停止。
AWS 引入了一套完整的 CI/CD 開發人員工具,以加速軟體開發和發行週期。每次發生程式碼變更時,AWS CodePipeline
程式碼管道可以與其他服務整合。這些可以是 AWS 服務,例如 Amazon Simple Storage Service
-
使用 AWS CodeBuild
編譯、建置和測試程式碼 -
將容器型應用程式持續交付至雲端
-
網路服務或特定雲端原生網路功能所需的成品 (例如描述子和容器映像) 的部署前驗證
-
容器化網路功能/虛擬網路功能 (CNF/VNF) 的功能、整合和效能測試,包括基準測試和迴歸測試
-
可靠性和災難復原 (DR) 測試。
![描述 AWS CICD 管道元件的圖表](images/cicd_5g3.png)
AWS CICD 管道元件
AWS 可以使用以下 AWS 開發人員工具來設定 CI/CD 管道:
CI/CD 管道可以使用 AWS CDK
CI/CD 程序包含以下步驟:
-
網路設定 - AWS CDK 和 AWS CloudFormation 會起始網路先決條件的建立:
-
基礎設施部署 - AWS CDK 和 AWS CloudFormation 會起始下列資源堆疊的建立:
-
雲端網路功能 (CNF) 部署 - 在此階段中,CNF 會使用 Kubectl
和 Helm Chart 工具部署到 EKS 叢集上。此階段還可以部署 CNF 所需的任何特定應用程式或工具以有效率地工作 (例如 Prometheus 或 Fluentd )。CNF 可以透過 Lambda 函數或使用 AWS CodeBuild 部署。 -
持續更新和部署 - 這些疊代執行的一系列步驟,用於部署會導致升級的容器/組態變更的部分變更。與 CNF 部署案例類似,可以使用 AWS 服務搭配來自 AWS CodeCommit
、Amazon Elastic Container Registry (Amazon ECR) 或第三方來源系統 (如 GitLab Webhooks ) 的觸發程序,將持續更新和部署自動化。
![描述 AWS CICD 管道流程的圖表。](images/cicd_5g4.png)
AWS CICD 管道流程圖表
CI/CD 管道是使用 AWS CodePipeline