Heroku 部署

此页面记录了使用下一个主要版本 dpl v2 的部署,该版本目前处于测试版阶段。请参阅 我们的博文 获取详细信息。当前默认版本为 dpl v1。请参阅 此处查看 dpl v1 文档

请务必阅读 v2 部署概述

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

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

deploy:
  provider: heroku:git
  api_key: <encrypted api_key>
  edge: true # opt in to dpl v2

或者,您可以使用 usernamepassword

deploy:
  provider: heroku:git
  username: <username>
  password: <encrypted password>

状态 #

对 Heroku Git 的部署支持处于 **alpha** 阶段。请参阅 成熟度级别 获取详细信息。

已知选项 #

使用以下选项进一步配置部署。需要 api_keyusernamepassword

api_key Heroku API 密钥 — **秘密**,类型:字符串
username Heroku 用户名 — 类型:字符串,别名:user
password Heroku 密码 — **秘密**,类型:字符串
git Heroku Git 远程 URL — 类型:字符串

共享选项 #

strategy Heroku 部署策略 — 类型:字符串,默认:api,已知值:apigit
app Heroku 应用名称 — 类型:字符串,默认:仓库名称
cleanup 在部署前清理 Git 工作目录中的构建工件 — 类型:布尔值
run 部署成功后要执行的命令 — 类型:字符串或字符串数组

环境变量 #

如果所有选项以 HEROKU_ 为前缀,则可以作为环境变量给出。

例如,api_key 可以作为 HEROKU_API_KEY=<api_key> 给出。

保护密钥 #

秘密选项值应作为构建配置(.travis.yml 文件)中的加密字符串或存储库设置中的环境变量给出。

环境变量可以在存储库的设置页面上设置,也可以使用 travis env set 设置。

travis env set HEROKU_API_KEY <api_key>

为了在将选项值添加到 .travis.yml 文件时对其进行加密,请使用 travis encrypt

travis encrypt <api_key>

或者使用 --add 直接将其添加到 .travis.yml 文件中。请注意,此命令必须在存储库的根目录中运行

travis encrypt --add deploy.api_key <api_key>

指定应用程序名称 #

默认情况下,您的存储库名称将用作应用程序名称。

您可以使用 app 选项设置不同的应用程序名称

deploy:
  provider: heroku
  # ⋮
  app: <app_name>

运行命令 #

在某些设置中,您可能希望在成功部署后在 Heroku 上运行命令。您可以使用 **run** 选项执行此操作

deploy:
  provider: heroku
  # ⋮
  run: rake db:migrate

它还接受命令列表

deploy:
  provider: heroku
  # ⋮
  run:
    - rake db:migrate
    - rake cleanup

请注意,当我们运行您的命令时,Heroku 应用可能尚未完全部署并准备好服务请求。为了缓解这种情况,您可以在您的命令之前添加 sleep 语句以添加延迟。

将分支部署到不同的应用 #

为了根据当前分支选择应用,请使用单独的部署配置

deploy:
  - provider: heroku
    # ⋮
    app: app-production
    on:
      branch: master
  - provider: heroku
    # ⋮
    app: app-staging
    on:
      branch: staging

或使用 YAML 引用

deploy:
  - &deploy
    provider: heroku
    # ⋮
    app: app-production
    on:
      branch: master
  - <<: *deploy
    app: app-staging
    on:
      branch: staging

自定义命令的错误日志 #

自定义 Heroku 命令不会影响 Travis CI 构建状态或触发 Travis CI 通知,因为 Heroku 的 CLI 始终退出 代码为 0,即使命令失败也是如此。

作为替代方案,您可以使用 Papertrail 或 Logentries 等附加组件来获取 rake db:migrate 或其他命令的通知。

这些附加组件具有电子邮件通知系统,可以在 Heroku 日志中出现特定字符串匹配时触发。例如,如果日志包含“此迁移及所有后续迁移已取消”或类似消息,您可以触发电子邮件通知。

重新启动应用程序 #

有时您希望在命令之间或之后重新启动您的 Heroku 应用程序。您可以通过添加“restart”命令轻松做到这一点

deploy:
  provider: heroku
  # ⋮
  run:
    - rake db:migrate
    - restart
    - rake cleanup

部署策略 #

Travis CI 支持不同的机制来部署到 Heroku

  • **api:** 使用 Heroku 的 构建 API。这是默认策略。
  • **git:** 通过 HTTPS 执行 git push

它默认为 **api**,但您可以通过 **strategy** 选项更改它

deploy:
  provider: heroku
  # ⋮
  strategy: git

在 Git 策略中使用 .gitignore #

当您使用任何 git 策略时,请注意部署将遵循 .gitignore

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

Pull Request #

请注意,Pull Request 构建完全跳过部署步骤。

另请参阅 #