使用 CodeBuild 和 buildspec.yml 实现自动化构建

在 AWS 上自动化部署

Dunieski Otano

Amazon Web Services Solutions Architect

CodeBuild 能做什么

  • CodeBuild 是一项全托管构建服务
  • 无需预置或管理服务器
  • 在临时容器中运行您的构建
  • 自动伸缩;只为构建分钟付费
  • 可作为 CodePipeline 的 Build 阶段集成

 

1-codebuild-managed-service-temporary-container-lifecycle.png

在 AWS 上自动化部署

buildspec.yml 文件

  • buildspec.yml:位于源代码根目录的 YAML 文件
  • 定义 CodeBuild 在构建期间执行的操作
  • 按顺序执行四个阶段:
    • install:安装依赖与工具
    • pre_build:构建前的准备任务
    • build:编译代码、运行测试
    • post_build:打包制品并清理

buildspec

在 AWS 上自动化部署

真实的 buildspec.yml 示例

  • install:pip install -r requirements.txt
  • pre_build:[ -z "$DB_URL" ] && exit 1
  • build:pytest tests/
  • post_build:先 zip -r app.zip . 再 echo "Build completed"

浅色主题代码编辑器,显示含四个阶段的 buildspec.yml,其中 build 运行 pytest 测试,post_build 将代码打包为 app.zip,作为流水线制品输出

在 AWS 上自动化部署

构建环境配置

 

4-codebuild-environment-config-compute-envvars-caching.png

  • 计算类型:small、medium、large、2xlarge
    • 根据构建复杂度与速度需求选择
  • 环境变量:将配置信息传入构建
    • 机密请存于 Parameter Store 或 Secrets Manager
  • 依赖缓存:在构建间缓存已下载包
    • 对大型项目可显著缩短构建时间
在 AWS 上自动化部署

制品输出与流水线集成

 

5-codebuild-artifact-output-s3-codepipeline-handoff.png

  • artifacts 段定义 CodeBuild 的输出
  • files:文件或模式列表;base-directory:根路径
  • 输出制品存入 S3,并自动传递到下一阶段
  • 路径错误会导致部署失败,即使构建成功
在 AWS 上自动化部署

完整的构建-测试-部署链路

  • 开发者将代码推送到 CodeCommit
  • CodePipeline 自动触发
  • CodeBuild:install -> pre_build -> build -> post_build
  • 构建制品流向 CodeDeploy
  • 应用部署到目标环境

6-full-cicd-chain-codecommit-codebuild-phases-codedeploy.png

在 AWS 上自动化部署

让我们一起练习吧!

在 AWS 上自动化部署

Preparing Video For Download...