web-dev-qa-db-ja.com

Herokuでのインスタンスのステージング

テストのためにdev.myapp.comにコードをプッシュし、次に実稼働用にwww.myapp.comにコードをプッシュできるようにしたいと思います。 Herokuでこれは可能ですか?

85
Tom Lehman

Herokuへのインターフェイスは、基本的にGitブランチです。 Heroku gemは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 [email protected]:staging-yourapp.git
git Push Origin staging

git remote add production [email protected]: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
142
Luke Bayes

これは、私のような初心者の場合に知っておく必要があるすべてのことを説明しています。 http://devcenter.heroku.com/articles/multiple-environments

19
LearningRoR

元の質問の重要な部分は、ステージングアプリをメインアプリ(www.myapp.com)のサブドメイン(dev.myapp.com)にリンクすることです。これはどの回答でも対処されていません。

ステップ1:生産( 'myapp')およびステージング( 'staging-myapp')バージョンの両方をアプリの構成(Luke Bayesの回答に示されているように)

ステップ2:ドメイン管理システム(GoDaddyなど)で:

Create a CNAME record:  dev.myapp.com 
that points to:   proxy.heroku.com

ステップ3:dev.myapp.comをstaging-myappにルーティングするようにHerokuを構成します。

heroku domains:add dev.myapp.com --app staging-myapp

CNAMEレコードが伝播する時間が経過すると、dev.myapp.comでステージングアプリを実行できるようになります。

10
Don Leatham

heroku_san を確認する必要があります

Herokuの環境をジャグリングするのは非常に良い仕事です。

8
jlfenaux

物事は今簡単です。方法は次のとおりです...

環境ごとにアプリを作成する

$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging

これにより、アプリごとに名前付きのリモートリポジトリが作成され、.git/config

-appまたは-remoteスイッチのいずれかを使用できるようになりました特定のアプリをターゲットにするには:

$ heroku info --app myapp-staging
$ heroku info --remote staging

Set Rails environments

For Rails apps、Heroku デフォルトは「本番」環境 。ステージングアプリをステージング環境で実行する場合は、 環境を作成します プロジェクトで、対応するRails_ENVおよびRAKE_ENV環境変数を設定しますアプリで:

$ 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

しかしそれは大きな痛みなので、私は snappconfig gemを使用して実行するだけです

$ rake heroku:config:load[myapp-staging]

プロジェクトのYAML設定ファイルをHerokuにロードします。

展開する

次のようにHerokuにプッシュするだけです。

$ git Push staging master
$ git Push production master

次のように移行します。

$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production

(詳細とショートカットについては アプリの複数環境の管理| Heroku Dev Center をご覧ください。)

7
Yarin