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 管道:

使用 AWS CDKAWS CloudFormation 可以自动创建 CI/CD 管道。在 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 Webhook)实现自动化。

描绘 AWS CICD 管道流程的示意图。

AWS CICD 管道流程图

CI/CD 管道是使用 AWS CodePipeline 构建的,它利用持续交付服务对软件发布所需的步骤进行建模、可视化和自动化。通过在管道中定义阶段,您可以从源代码存储库中检索代码,将该源代码构建为可发布的构件,测试构件,然后将其部署到生产环境中。只有成功通过所有这些阶段的代码才会被部署。您可以选择向管道添加其他要求(例如手动批准),以帮助确保仅将批准的更改部署到生产环境中。