CodeDeploy 基础与 appspec.yml

在 AWS 上自动化部署

Dunieski Otano

Amazon Web Services Solutions Architect

CodeDeploy 的作用

流程

  • 将代码发布到 EC2、Lambda 或 ECS
  • 从 S3、GitHub 或 Bitbucket 拉取构建产物
  • 通过生命周期事件运行您的部署脚本
  • 出错时自动回滚
在 AWS 上自动化部署

CodeDeploy 核心组件

流程

  • Application:用于归组部署的名称
  • Deployment group:接收发布的目标
  • Deployment configuration:发布方式(分批实例或流量切换)
  • Revision:要部署的工件包
在 AWS 上自动化部署

认识 appspec.yml

appspec

  • 位于修订版根目录的 YAML 文件
  • 顶部需包含 version: 0.0 和 os: linux
  • 告诉 CodeDeploy哪些文件放到哪里
  • 告诉 CodeDeploy何时运行哪些内容
在 AWS 上自动化部署

EC2 的生命周期事件

  • 您编写:ApplicationStop、BeforeInstall、AfterInstall
  • 您编写:ApplicationStart、ValidateService
  • 系统运行:DownloadBundle、Install
  • 每个钩子是在实例上的shell 或 PowerShell 脚本

图示

在 AWS 上自动化部署

Lambda 的生命周期事件

  • Lambda 只有两个钩子:BeforeAllowTraffic、AfterAllowTraffic
  • 钩子是Lambda 函数,不是 shell 脚本
  • CodeDeploy将别名切换到新版本
  • 无需登录实例;无需拷贝文件

对比

在 AWS 上自动化部署

EC2 的真实 appspec.yml 示例

  • 顶部包含 version: 0.0 和 os: linux
  • files:将 app.zip 内容复制到 /var/www/app
  • BeforeInstall、AfterInstall、ApplicationStart:生命周期脚本
  • ValidateService:冒烟测试确认成功

zip

在 AWS 上自动化部署

让我们一起练习吧!

在 AWS 上自动化部署

Preparing Video For Download...