【问题标题】:Adding a staging environment to the workflow [closed]向工作流程添加暂存环境 [关闭]
【发布时间】:2013-10-13 10:43:16
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    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插件
    5. 使用heroku config:pull --remote production从heroku(生产服务器)中提取您的环境设置
    6. 更改 .env 文件,不要忘记将这些值添加到配置中:RACK_ENV=staging RAILS_ENV=staging,这样它将使用暂存环境配置。
    7. 使用heroku fork -a production staging 分叉一个heroku 环境(这些是您想要的heroku 应用名称,而不是生产/登台)
    8. 执行 `heroku config:push --remote staging'
    9. 确保将代码正确部署到 staging env

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

    【讨论】:

    • 非常感谢您的详细解释。我首先了解暂存/生产远程设置的概念,一旦到位,我开始想知道 - 分离生产/暂存环境的实际好处是什么?我通常会有两个本地分支:master/development,当开发在暂存远程上被推送和审查时,我会合并 development -> master 并将其推送到生产远程。
    • 您应该拥有 staging 环境,与您的生产环境相同,以查看应用程序在生产环境中的实际执行情况,并能够让产品所有者在使用之前测试功能投入生产。 TDD 无法真正捕捉到的大多数问题是例如您可以轻松跳过的 css 回归,或者总是咆哮的资产地狱可能会在某个地方中断。简而言之,有一个暂存环境,应该与生产环境相同,您不必拥有相同的服务器野兽,只需确保堆栈完全相同,直至部署。
    • 当我运行 heroku config:pull 命令时,我得到 config:pull 不是 heroku 命令。前几天为mac下载的toolbelt:heroku-toolbelt/3.2.1 (x86_64-darwin10.8.0) ruby​​/1.9.3
    • @jpwynn 你必须安装 heroku-config 插件,抱歉我忘记添加了。 devcenter.heroku.com/articles/…
    • 其他人在按照 babinho 的步骤尝试迁移时遇到 PG::DataCorrupted 错误?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 2014-08-25
        • 1970-01-01
        • 1970-01-01
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多