本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS 和 AW CodePipeline S CDK 设置 CI/CD 管道
创建者:Konstantin Zarudaev (AWS)、Cizer Pereira (AWS)、Lars Kinder (AWS) 和 Yasha Dabas (AWS)
代码存储库: CodePipeline 带有 CI/CD 的 AWS | 环境:PoC 或试点 | 技术: DevOps |
工作负载:开源 | AWS 服务:AWS CodePipeline |
主页
通过持续交付 (CI/CD) 实现软件构建和发布过程的自动化,支持可重复构建和向用户快速交付新功能。您可快速轻松测试每个代码更改,也可以在发布软件之前捕捉并修复错误。通过在暂存和发布过程中运行每项更改,您可验证应用程序或基础设施代码的质量。CI/CD 体现了一种文化、一套操作原则以及一系列实践
此模式定义了 Amazon Web Services (AWS) 上可重复使用的持续集成和持续交付 (CI/CD) 管线。AWS CodePipeline 管道是使用 AW S Cloud Development Kit (AWS CDK) v2
使用 CodePipeline,您可以通过 AWS 管理控制台界面、AWS 命令行界面 (AWS CLI)、AWS 或 AWS 软件开发工具包对软件发布过程的不同阶段进行建模。 CloudFormation此模式演示了使用 AWS CDK 的实现 CodePipeline 及其组件。除了构造库外,AWS CDK 还包括一个工具包(CLI 命令 cdk
),它是与您的 AWS CDK 应用程序交互的主要工具。除其他功能外,该工具包还提供将一个或多个堆栈转换为 CloudFormation 模板并将其部署到 AWS 账户的功能。
该管线包括验证第三方库安全性的测试,有助于确保在指定环境中快速、自动发布。您可通过对应用程序进行验证来提高应用程序的整体安全性。
这种模式的目的是加快您使用 CI/CD 管道来部署代码,同时确保您部署的资源符合 DevOps 最佳实践。实施示例代码
先决条件和限制
先决条件
一个有效的 Amazon Web Services account
基本定义如下:
AWS CDK
AWS CloudFormation
AWS CodePipeline
TypeScript
限制
此模式 TypeScript 仅将 AWS CDK 用于。它不包含 AWS CDK 支持的其他语言。
产品版本
使用以下工具的最新版本:
AWS 命令行界面(AWS CLI)
cfn_nag
git-remote-codecommit
Node.js
架构
目标技术堆栈
AWS CDK
AWS CloudFormation
AWS CodeCommit
AWS CodePipeline
目标架构
该管道由 AWS CodeCommit 存储库的更改触发 (SampleRepository
)。一开始, CodePipeline 构建工件,更新自身,然后启动部署过程。生成的管线将解决方案部署至三个独立的环境:
开发 – 在活跃的开发环境进行三步代码检查
测试 - 集成和回归测试环境
Prod – 生产环境
开发阶段包含的三个步骤是 linting、安全性和单元测试。这些步骤并行运行,以加快流程。为确保管线仅提供可运行的构件,每当流程中的某个步骤失败时,它就会停止运行。开发阶段部署后,管线运行验证测试以验证结果。如果成功,管线会将构件部署到测试环境,其中包含部署后验证。最后一步是将构件部署至 Prod 环境。
下图显示了从 CodeCommit 存储库到由执行的构建和更新过程的工作流程 CodePipeline、三个开发环境步骤,以及三个环境中每个环境中的后续部署和验证。
![开发环境包括 linting、安全和单元测试,所有这些都包括部署和验证。](images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)
工具
Amazon Web Services
AWS Cloud Development Kit (AWS CDK) 是一个软件开发框架,可帮助您在代码中定义和预调配 Amazon Web Services Cloud 基础设施。
AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和区域的整个生命周期中对其进行管理。在这种模式中, CloudFormation 模板可用于创建 CodeCommit 存储库和 C CodePipeline I/CD 管道。
AWS CodeCommit 是一项版本控制服务,可帮助您私下存储和管理 Git 存储库,而无需管理自己的源代码控制系统。
AWS CodePipeline 是一项 CI/CD 服务,可帮助您快速建模和配置软件发布的不同阶段,并自动执行持续发布软件更改所需的步骤。
AWS 命令行界面(AWS CLI)是一种开源工具,它可帮助您通过命令行 Shell 中的命令与 Amazon Web Services 交互。
其他工具
cfn_nag
是一个开源工具,可在 CloudFormation 模板中查找模式以识别潜在的安全问题。 git-remote-codecommit是一个通过扩展 Git 从 CodeCommit 存储库中推送和提取代码的实用工具。
Node.js
是一个事件驱动的 JavaScript 运行时环境,专为构建可扩展的网络应用程序而设计。
代码
此模式的代码可在 GitHub AWS CodePipeline with CI/CD 实践
最佳实践
查看资源(例如 AWS Identity and Access Management (IAM) 策略),以确认它们符合您的组织最佳实践。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
在 macOS 或 Linux 上安装工具。 | 如果您使用的是 macOS 或 Linux,则可以通过在首选终端中运行以下命令或使用 Homebrew for Linux
| DevOps 工程师 |
通过 AWS Cloud9 安装工具。 | 如果您使用 AWS Cloud9
注意:AWS Cloud9 应该安装 Node.js 和 npm。要检查安装或版本,请运行以下命令。
| DevOps 工程师 |
设置 AWS CLI。 | 要设置 AWS CLI,请使用适合操作系统的说明:
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
下载或克隆代码。 | 要获取此模式使用的代码,请执行以下操作之一:
从克隆的存储库中删除
稍后,您将使用新创建的 AWS CodeCommit 存储库作为远程来源。 | DevOps 工程师 |
连接至 Amazon Web Services account。 | 您可使用临时安全令牌或登录区身份验证进行连接。要确认您使用的是正确的账户和 AWS 区域,请运行以下命令。
| DevOps 工程师 |
引导环境。 | 要引导 AWS CDK 环境,请运行以下命令。
成功引导环境后,应该显示以下输出。
有关更多信息,请参阅 AWS CDK 文档中的 AWS CDK 引导。 | DevOps 工程师 |
合成模板。 | 要合成 AWS CDK 应用程序,请使用
您应当看到如下输出。
| DevOps 工程师 |
部署 CodePipeline 堆栈。 | 现在,您已经引导并合成了 CloudFormation 模板,可以对其进行部署。部署将创建 CodePipeline 管道和 CodeCommit 存储库,这将是管道的来源和触发器。
运行命令后,您应该会看到 CodePipeline 堆栈的成功部署和输出信息。
| DevOps 工程师 |
设置远程 CodeCommit 存储库和分支。 | 成功部署后, CodePipeline 将启动管道的首次运行,您可以在 AWS CodePipeline 控制台
要修复此错误,请将远程源设置为
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
提交更改,以激活管线。 | 成功完成初始部署后,您应该拥有完整的 CI/CD 管线,其中包含一个
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
使用 Makefile 运行开发过程。 | 您可使用 要使用
| 应用程序开发者、 DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
删除 AWS CDK 应用程序资源。 | 要清理您的 AWS CDK 应用程序,请运行以下命令。
请注意,引导启动期间创建的 Amazon Simple Storage Service (Amazon S3) 存储桶将不会自动删除。它们需要允许删除的保留策略,或者您需要在您的 Amazon Web Services account 中手动删除它们。 | DevOps 工程师 |
故障排除
问题 | 解决方案 |
---|---|
该模板未按预期工作。 | 如果出现问题且模板无法正常工作,请确保您具备以下条件:
|