AWS OpsWorks 部署

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

在成功构建后,Travis CI 可以自动部署您的 AWS OpsWorks 应用程序。

对于最小配置,您只需要在您的 .travis.yml 中添加以下内容

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  region: REGION # (default: us-east-1)

region 不是必需的,但默认值为 us-east-1。如果您的应用程序位于其他区域,您将收到类似于“OpsWorks 服务错误:无法找到 ID 为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的应用程序”的错误。

您可以在 此处 获取您的 AWS 访问密钥 ID 和您的 AWS 密钥。建议您加密您的 AWS 密钥。假设您已安装 travis 客户端,您可以这样做

travis encrypt SECRET-ACCESS-KEY --add deploy.secret-access-key

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

travis setup opsworks

请记住,上述命令必须在您的项目目录中运行,以便它可以修改您的 .travis.yml。请注意,region 不是通过运行 travis setup opsworks 生成的。

迁移数据库 #

如果您想将您的 Rails 数据库从 Travis 迁移到 AWS OpsWorks,请将 migrate 选项添加到您的 .travis.yml 中。

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  migrate: true

要部署的分支 #

默认情况下,Travis CI 只会从您的 **主** 分支部署。

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

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  on: production

或者,您也可以将其配置为从所有分支部署

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  on:
    all_branches: true

从拉取请求触发的构建永远不会触发部署。

部署构建工件 #

在您的测试运行并在部署阶段之前,Travis CI 将清理您所做的任何其他文件和更改。

也许这不是您想要的,因为您可能会生成一些也应该部署的工件(例如资产编译)。现在有一个选项可以跳过清理

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  skip_cleanup: true

等待部署 #

默认情况下,构建将在触发 OpsWorks 部署后立即继续。要等待部署完成,请使用 **wait-until-deployed** 选项

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  wait-until-deployed: true

Travis CI 将等待最多 10 分钟以完成部署,并记录其是否成功。

在成功部署后更新应用程序设置 #

默认情况下,来自 Travis CI 的部署将在 OpsWorks 上触发部署,但不会触及任何其他配置。要更新应用程序设置中的修订版,请使用 **update-app-on-success** 选项。此外,您必须设置 **wait-until-deployed** 选项

deploy:
  provider: opsworks
  access-key-id: ACCESS-KEY-ID
  secret-access-key: SECRET-ACCESS-KEY
  app-id: APP-ID
  wait-until-deployed: true
  update-app-on-success: true

Travis CI 将等待直到部署返回成功,然后才会更新应用程序设置中的修订版。

条件发布 #

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

在部署之前和之后运行命令 #

有时您希望在部署之前或之后运行命令。您可以使用 before_deployafter_deploy 阶段来完成此操作。只有在 Travis CI 实际部署时才会触发这些阶段。

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