AWS CodeDeploy

此页面记录了使用 dpl v1 进行部署,目前这是默认版本。下一个主要版本 dpl v2 将很快发布,我们建议您开始使用它。请参阅 我们的博客文章 获取详细信息。dpl v2 文档可以在这里找到

Travis CI 可以在构建成功后自动触发 AWS CodeDeploy 上的新部署。

对于使用 S3 的最小配置,请将以下内容添加到您的 .travis.yml

deploy:
  - provider: s3
    # rest of S3 deployment for MyApp.zip
    # ⋮
  - provider: codedeploy
    access_key_id: "YOUR AWS ACCESS KEY"
    secret_access_key: "YOUR AWS SECRET KEY"
    bucket: "S3 Bucket"
    key: latest/MyApp.zip
    application: MyApp
    deployment_group: MyDeploymentGroup

请注意,在此示例中,Travis CI 将尝试部署到 AWS 区域 us-east-1 中名为 MyApp 的现有 CodeDeploy 应用程序。

完整的示例可以 在这里 找到。

您可以在 此处 找到您的 AWS 访问密钥。建议加密该密钥。

如果您的 CodeDeploy 应用程序位于除 us-east-1 之外的任何区域,请将区域字段添加到 .travis.yml(请参阅 要部署到的 AWS 区域)。

假设您已安装 Travis CI 命令行客户端,您可以像这样操作

travis encrypt --add deploy.secret_access_key

系统将提示您在命令行中输入您的 API 密钥。

您还可以让 travis 工具为您设置好一切

travis setup codedeploy

请记住,上述命令必须在您的项目目录中运行,以便它可以为您修改 .travis.yml

如果要从 Travis CI 构建上传捆绑包,此命令还将提供设置 S3 部署 的选项。

要从中部署的分支 #

您可以使用 on 选项明确指定要从中部署的分支

deploy:
  provider: codedeploy
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key: "YOUR AWS SECRET KEY"
  bucket: "S3 Bucket"
  key: latest/MyApp.zip
  bundle_type: zip
  application: MyApp
  deployment_group: MyDeploymentGroup
  on:
    branch: production

或者,您还可以配置 Travis CI 从所有分支部署

deploy:
  provider: codedeploy
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key: "YOUR AWS SECRET KEY"
  bucket: "S3 Bucket"
  key: latest/MyApp.zip
  bundle_type: zip
  application: MyApp
  deployment_group: MyDeploymentGroup
  on:
    all_branches: true

从 Pull Request 触发的构建永远不会触发发布。

S3 部署或 GitHub 部署 #

对于使用 GitHub 的最小配置,请将以下内容添加到您的 .travis.yml

deploy:
  - provider: codedeploy
    revision_type: github
    access_key_id: "YOUR AWS ACCESS KEY"
    secret_access_key: "YOUR AWS SECRET KEY"
    application: "Your Codedeploy application"
    deployment_group: "The Deployment group associated with the codedeploy application"
    region: "Region in which your ec2 instance is."

请注意,region 应与配置 codedeploy 的实例区域匹配。

另请注意,GitHub 部署针对特定提交,任何未版本化的文件都不会被部署。如果您需要将未版本化的文件添加到部署中,请改用 S3 部署。

等待部署 #

默认情况下,构建将在触发 CodeDeploy 部署后立即继续。要等待部署完成,请使用 wait_until_deployed 选项

deploy:
  provider: codedeploy
  wait_until_deployed: true
  # ⋮

Travis CI 将等待部署完成,并记录其是否成功。

捆绑类型 #

您的应用程序的 bundleType 是从 .travis.yml 中设置的 keys3_key 的文件扩展名推断出来的。

如果您的 .travis.yml 同时包含两者,并且它们不匹配,请将 bundle_type 显式设置为正确的值。

条件部署 #

只有在满足某些条件时才能进行部署。请参阅 使用 on: 进行条件发布

关于 .gitignore 的说明 #

由于此部署策略依赖于 git,请注意部署将遵循 .gitignore

如果您的 .gitignore 文件匹配构建创建的内容,请使用 before_deploy 更改其内容。

在部署前后运行命令 #

有时您需要在部署前后运行命令。您可以为此使用 before_deployafter_deploy 阶段。只有在 Travis CI 实际进行部署时才会触发这些阶段。

before_deploy: "echo 'ready?'"
deploy:
  # ⋮
after_deploy:
  - ./after_deploy_1.sh
  - ./after_deploy_2.sh

要部署到的 AWS 区域 #

您可以使用 region 选项明确指定要部署到的 AWS 区域

deploy:
  provider: codedeploy
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key: "YOUR AWS SECRET KEY"
  bucket: "S3 Bucket"
  key: latest/MyApp.zip
  bundle_type: zip
  application: MyApp
  deployment_group: MyDeploymentGroup
  region: us-west-1