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

22

我目前有两个工作环境:本地开发环境(development)Heroku生产环境(production)

我想在Heroku上添加一个暂存(staging)环境,以便在将应用程序推送给用户之前查看所有内容是否如预期。最好是,暂存(staging)环境应具有与生产(production)环境完全相同的设置和数据。

要完成以上操作,需要哪些步骤?

3个回答

37

首先是设置偏好,我喜欢将我的Heroku Git远程设置为staging和production,这样您就可以轻松使用git push staging/production将其部署到每个环境中。我将使用此设置来解释如何创建staging环境。

  1. 创建一个 `config/environments/staging.rb` 文件,你需要从 `config/environments/production.rb'` 中复制它
  2. 为staging数据库添加database.yml入口(虽然在Heroku上不真正需要,但也无妨)
  3. 备份您的 `.env` 文件(如果有的话)
  4. 通过 `heroku plugins:install git://github.com/ddollar/heroku-config.git` 安装 Heroku-Config 插件
  5. 用 `heroku config:pull --remote production` 从Heroku(生产服务器)拉取您的环境设置
  6. 更改 `.env` 文件,并别忘了添加这些值到配置: RACK_ENV=staging RAILS_ENV=staging ,这样它将使用staging环境配置。
  7. 使用 `heroku fork -a production staging` 分叉一个Heroku环境(那些Heroku应用名应该替换成您的production/staging)
  8. 执行 `heroku config:push --remote staging`
  9. 确保正确地将代码部署到staging环境中

您还可以阅读这篇教程,我认为我用它来开始在Heroku上使用多个环境: https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations


非常感谢您提供详细的解释。我首先理解了分离/生产远程设置的概念,然后开始思考 - 分离生产/暂存环境的实际好处是什么?通常我会有两个本地分支:主分支/开发分支,当开发在暂存远程上被推送和审核后,我会将开发分支合并到主分支并将其推送到生产远程。 - Fellow Stranger
3
为了真正了解应用在生产环境下的性能表现,以及让产品负责人员在发布前测试功能,你需要一个与生产环境相同的演示环境。大多数 TDD 无法捕捉的问题,例如可以轻松跳过的 CSS 回归,或者经常出现的资源管理问题可能会在某处出错。简而言之,需要一个演示环境,配置与生产环境相同。不必拥有与生产服务器相同的硬件,只需确保软件栈完全相同,包括部署方式。 - berislavbabic
当我运行 heroku config:pull 命令时,会出现 config:pull 不是 heroku 命令的错误提示。几天前,我在 Mac 上下载了 Heroku Toolbelt/3.2.1 (x86_64-darwin10.8.0) ruby/1.9.3。 - jpw
@jpwynn,您需要安装heroku-config插件,抱歉我忘记添加了。https://devcenter.heroku.com/articles/config-vars#using-foreman-and-heroku-config - berislavbabic
在按照babinho的步骤进行迁移后,是否还有其他人遇到了PG :: DataCorrupted错误? - Ben Wheeler

8
我发现heroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAME是更快、更简便的做法...它创建了一个新的应用程序,并复制了一切内容(包括postgres数据库)。然后,当有必要时(例如对于起始层次的数据库),我手动降级附加组件。 实际上,我们开始使用相对较新的heroku pipeline:promote自动管理(并非常快地)将编译好的代码从staging推送到production。(这假设您在设置或环境变量中具有任何特定于环境的设置,因此代码标记相同。)

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接