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
或者,您可以使用 username
和 password
deploy:
provider: heroku:git
username: <username>
password: <encrypted password>
状态 #
对 Heroku Git 的部署支持处于 **alpha** 阶段。请参阅 成熟度级别 获取详细信息。
已知选项 #
使用以下选项进一步配置部署。需要 api_key
或 username
和 password
。
api_key |
Heroku API 密钥 — **秘密**,类型:字符串 |
username |
Heroku 用户名 — 类型:字符串,别名:user |
password |
Heroku 密码 — **秘密**,类型:字符串 |
git |
Heroku Git 远程 URL — 类型:字符串 |
共享选项 #
strategy |
Heroku 部署策略 — 类型:字符串,默认:api ,已知值:api 、git |
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 构建完全跳过部署步骤。