将暂存环境添加到工作流程

时间:2013-10-13 10:43:17

标签: ruby-on-rails ruby heroku ruby-on-rails-3.2 staging

我目前有两个工作环境:本地development和Heroku上的production

我想在Heroku上添加一个staging环境,看看在向用户推送应用之前,一切都按预期进行。优选地,staging环境应具有与production环境完全相同的设置和数据。

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

3 个答案:

答案 0 :(得分:35)

首先,我喜欢让我的heroku git遥控器设置为舞台和制作,这样你就可以轻松地使用git push staging / production来部署到每一个。我将使用该设置来解释如何进行暂存环境。

  1. 创建一个config/environments/staging.rb,您将复制“config / environments / production.rb”
  2. 为登台数据库添加一个database.yml条目(heroku不是真的需要但不能伤害)
  3. 备份您的.env文件(如果有的话)
  4. heroku plugins:install git://github.com/ddollar/heroku-config.git
  5. 安装heroku-config插件
  6. 使用heroku config:pull --remote production
  7. 从heroku(生产服务器)中提取您的环境设置
  8. 更改.env文件,不要忘记将这些值添加到配置:RACK_ENV=staging RAILS_ENV=staging,以便它将使用登台环境配置。
  9. 使用heroku fork -a production staging分叉heroku环境(这些是您想要的heroku应用程序而不是生产/暂存)
  10. 做一个`heroku config:push --remote staging'
  11. 务必将代码部署到正确的staging env
  12. 你也可以阅读本教程,我想我用它来开始在heroku上使用多个env: https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

答案 1 :(得分:8)

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

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

答案 2 :(得分:6)

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

您可以在那里详细阅读,但建议将暂存环境与生产环境保持一致,只需使用heroku fork从生产复制到暂存。