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 管道:
使用 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 Webhook )实现自动化。
![描绘 AWS CICD 管道流程的示意图。](images/cicd_5g4.png)
AWS CICD 管道流程图
CI/CD 管道是使用 AWS CodePipeline