Herokuの上のインスタンスをステージング
-
16-09-2019 - |
質問
私はテストのためdev.myapp.com
し、その後、本番環境での使用のためにwww.myapp.com
するコードをプッシュできるようにしたいと思います。これはHerokuのでは可能ですか?
解決
Herokuのにあなたのインターフェースは、基本的にGitのブランチです。 Herokuの宝石は、そのAPIを介していくつかの作業を行いますが、あなたのGitリポジトリ内では、それだけで新しいリモートブランチです。
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
あなたはHerokuの上で複数のアプリケーションを設定したら、あなたはこのようなあなたのGitのリポジトリを設定することができる必要があります:
git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging
git remote add production git@heroku.com:yourapp.git
git push origin production
私は通常、「作業」ブランチで作業し、私の主人のためのGithubを使用します。
それはあなたのためのケースだと仮定すると、あなたのデプロイのワークフローは、おそらくのようになります:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
他のヒント
元の質問の重要な部分は、メインアプリ(www.myapp.com)のサブドメイン(dev.myapp.com)にステージングアプリをアップリンクについてです。これは、答えのいずれかで対処されていません。
ステップ1:ルークベイズによって解答に示されるように、両方の生産(「myappに」)とステージング(「ステージング-myappに」)のアプリのバージョンを設定します。
ステップ2:ドメイン管理システムにおいて(例えばGoDaddyの)
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
ステップ3:ステージング-のMyAppにルーティングdev.myapp.comにHerokuのを設定します。
heroku domains:add dev.myapp.com --app staging-myapp
CNAMEレコードが伝播する時間を過ごした後、あなたがdev.myapp.comであなたのステージングアプリケーションを実行することができるようになります。
あなたは heroku_sanする
これは、Herokuの上の環境でかなり良い仕事ジャグリングを行います。
物事は今簡単です。ここではあなたがそれを行う方法です...
各環境のためのアプリケーションを作成します。
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
これは、あなたが.git/config
で見ることができ、それぞれのアプリのためのリモートリポジトリの名前が作成されます。
あなたは今ののいずれかを使用することができます
"生産" 環境のにRailsのアプリケーション、Herokuのはデフォルトの場合。あなたのステージングアプリはステージング環境で実行したい場合は、プロジェクトで環境を作成し、セット対応の RAILS_ENV と RAKE_ENV のアプリ上の環境変数ます: 私はちょうど私のの snappconfig のの宝石を使用して実行してもそれは巨大な痛みですP>
Herokuのに私のプロジェクトのYAML設定ファイルをロードします。$ heroku info --app myapp-staging
$ heroku info --remote staging
設定Railsの環境
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
環境
を設定します
あなたが他の設定変数をお持ちの場合は、同様に各環境のためにそれらを渡す必要があります。$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
$ rake heroku:config:load[myapp-staging]
展開
今、あなたはちょうどこのようにHerokuのにプッシュ
$ git push staging master
$ git push production master
と、次のように移行します:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
<時間>