22

我目前有两个工作环境:development本地和productionHeroku。

我想staging在 Heroku 上添加一个环境,以在将应用程序实时推送给用户之前查看一切是否按预期进行。优选地,staging环境应该具有与环境完全相同的设置和数据production

完成以上步骤需要哪些步骤?

4

3 回答 3

37

首先是倾向,我喜欢将我的 heroku git 遥控器设置为登台和生产,这样您就可以轻松地使用 git push 登台/生产来部署到它们中的每一个。我将使用该设置来解释如何制作登台环境。

  1. 创建一个config/environments/staging.rb您将复制的 `config/environments/production.rb'
  2. 为暂存数据库添加一个 database.yml 条目(heroku 并不真正需要,但不会受到伤害)
  3. 备份你的 .env 文件(如果你有的话)
  4. 安装 heroku-config 插件heroku plugins:install git://github.com/ddollar/heroku-config.git
  5. 从heroku(生产服务器)中提取您的环境设置heroku config:pull --remote production
  6. 对 .env 文件进行更改,不要忘记将这些值添加到配置中:RACK_ENV=staging RAILS_ENV=staging因此它将使用暂存环境配置。
  7. 派生一个heroku环境heroku fork -a production staging(那些是你想要的heroku应用程序名称,而不是生产/登台)
  8. 做一个 `heroku config:push --remote staging'
  9. 确保将代码正确部署到 staging env

您也可以阅读本教程,我想我用它来开始使用 heroku 上的多个环境: https ://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

于 2013-10-13T11:21:18.817 回答
8

我发现这heroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAME是一种更快、更简单的方法……它创建新应用程序,复制所有内容(包括 postgres 数据库)。然后我进去并在有意义的时候手动将插件降级为较小的计划(例如,入门层数据库)。

事实上,我们开始使用相对较新heroku pipeline:promote的自动管理(并且非常快速)将已编译的 slug 从暂存阶段推送到生产阶段。(假设您通过设置或环境变量具有任何特定于 env 的设置,因此代码段是相同的。)

于 2014-01-05T01:49:05.570 回答
6

请注意,根据 Heroku 网站上的以下指南,不建议使用 berislavbabic 解释的过程:https ://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

您可以在那里详细阅读,但建议是保持暂存环境与生产环境相同,并简单地使用 heroku fork 从生产环境复制到暂存环境。

于 2014-06-10T05:58:17.380 回答