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

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

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

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

首先是倾向,我喜欢将我的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安装heroku-config插件heroku plugins:install git://github.com/ddollar/heroku-config.git
  5. 使用heroku config:pull --remote production从heroku(生产服务器)中提取环境设置heroku config:pull --remote production
  6. 更改.env文件,不要忘记将这些值添加到配置中: RACK_ENV=staging RAILS_ENV=staging这样它将使用登台环境配置。
  7. 使用heroku fork -a production staging (这些是你想要的heroku appnames而不是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

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

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

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

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