2013-10-13 19 views
19

私は現在、私が働く環境は2つあります:developmentはローカル、productionはHerokuです。ワークフローにステージング環境を追加する

Herokuにstaging環境を追加して、アプリを実際にユーザーに公開する前に、すべてが期待どおりになることを確認したいと思います。好ましくは、staging環境は、production環境と全く同じ設定およびデータを有するべきである。

上記を達成するために必要なステップは何ですか?

答えて

34

最初に、私はheroku git remotesをステージングとプロダクションとしてセットアップして、git pushステージング/プロダクションを使って各ステージに簡単にデプロイすることができます。このセットアップを使用してステージング環境を作成する方法を説明します。

  1. (本当にHerokuのために必要ではないが、傷つけることはできません)を使用すると、ステージング・データベースのためのdatabase.ymlのエントリを追加の `config /環境/ production.rb」
  2. をオフにコピーしますconfig/environments/staging.rbを作成
  3. バックアップします.envファイル(あなたがそれを持っている場合)
  4. heroku config:pull --remote production
  5. でHerokuの(運用サーバー)から、ご使用の環境設定を引っ張るheroku plugins:install git://github.com/ddollar/heroku-config.git
  6. でHerokuの-config設定のプラグインをインストールチャンを作りますこれらの値をconfig:RACK_ENV=staging RAILS_ENV=stagingに追加することを忘れないでください。そうすれば、ステージング環境設定が使用されます。
  7. フォークheroku fork -a production stagingとHerokuの環境(それらは、Herokuのは、あなたの代わりに生産/ステージングで欲しいappnamesある)
  8. `Herokuのコンフィグを行います--remoteステージングを押して」
  9. 適切ENVのステージングにコードを展開するようにしてください

ます。また、このチュートリアルを読むことができ、私はそれがHerokuの上に複数のENVSを始めるために使用されると思う:https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

+0

詳細な説明はありがとうございます。私はステージング/プロダクションのリモートセットアップのコンセプトに頭を浮かべて始めました。それがいったん成立したら、生産/ステージング環境を分離する実際のメリットは何ですか?私は通常、2つのローカルブランチを持っています:マスター/開発、および開発がプッシュされ、ステージングリモートでレビューされたら、私は開発 - >マスターをマージし、プロダクションのリモートにプッシュします。 –

+3

プロダクション環境でアプリケーションが実際にどのように実行されているかを確認し、プロダクトオーナーがプロダクションに入る前に機能をテストできるようにするには、プロダクション環境と同じステージング環境を用意する必要があります。 TDDが実際に捉えることができない問題のほとんどは、簡単にスキップできるcss回帰や、いつも厄介な資産がどこかに壊れることがあります。 短いものは、ステージングのenvを持って、プロダクションと同じ設定にする必要があります、あなたはサーバーの同じ獣を持っている必要はありません、ちょうどスタックが完全に同じであることを確認してください。 – berislavbabic

+0

heroku config:pullコマンドを実行すると 'config:pull'がherokuコマンドではありません。数日前にmac用にtoolbeltをダウンロードしました:heroku-toolbelt/3.2.1(x86_64-darwin10.8.0)ruby/1.9.3 – jpwynn

8

が、私はそれを行うにはより速く、より簡単な方法であることがheroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAMEを見つけました...これは、C新しいアプリケーションをreatesし、すべてをコピーします(postgresデータベースを含む)。その後、アドオンを理解していれば(たとえば、初心者層のデータベースなど)、アドオンを小さな計画にダウングレードしました。

実際、比較的新しいheroku pipeline:promoteを使用して、コンパイルされたスラッグをステージングからプロダクションに自動的に(そして非常に迅速に)管理することから始めました。 (つまり、コードスラグが同じであるので、設定や環境変数を経由して任意のENV固有の設定を前提としています。)

6

注berislavbabicで説明した手順は、Herokuののサイト上で次のガイドに従って、推奨されていないこと:https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

そこでは詳細を読むことができますが、ステージング環境を運用環境と同じに保ち、単にプロダクションからステージングにコピーするためにheroku forkを使用することをお勧めします。

関連する問題