86

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

4

5 に答える 5

142

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 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
于 2009-08-21T20:44:39.693 に答える
19

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

于 2012-01-05T04:45:04.007 に答える
10

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

ステップ1:Luke Bayesの回答に示されているように、アプリの本番バージョン('myapp')とステージングバージョン('staging-myapp')の両方を構成します

ステップ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でステージングアプリを実行できるようになります。

于 2012-05-01T07:35:13.647 に答える
8

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

これは、herokuの環境とうまく連携します。

于 2010-12-29T13:08:36.463 に答える
7

物事は今より簡単です。これがあなたのやり方です...

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

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

これにより、アプリごとに名前付きリモートリポジトリが作成されます。これはで確認できます.git/config

これで、 -appまたは--remoteスイッチのいずれかを使用して、特定のアプリをターゲットにできます。

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

Rails環境を設定する

Railsアプリの場合、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

それは大きな苦痛ですが、snappconfiggemを使用して実行するだけです

$ 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を参照してください。)

于 2013-09-27T13:46:20.007 に答える