dev.myapp.com
コードをテスト用にプッシュしてからwww.myapp.com
、本番用にプッシュできるようにしたいと思います。これはHerokuで可能ですか?
5 に答える
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
これは、私のような初心者が知っておく必要があるすべてのことを説明しています:http: //devcenter.heroku.com/articles/multiple-environments
元の質問の重要な部分は、ステージングアプリをメインアプリ(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でステージングアプリを実行できるようになります。
heroku_sanを確認する必要があります
これは、herokuの環境とうまく連携します。
物事は今より簡単です。これがあなたのやり方です...
環境ごとにアプリを作成する
$ 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