Herokuへのデプロイ方法を理解するために試してみたメモ。

Herokuの基本

herokuでは、リモートリポジトリのmasterにgit pushすることで、デプロイを実行します。
なお、master以外にプッシュしても意味がありません(参考: Deploying with Git)。

Branches pushed to Heroku other than master will be ignored by this command.

準備

$ heroku createコマンドにより、appの作成・リモートリポジトリの追加が実行できます。
--remoteオプションをつけない場合、リモートリポジトリ名は”heroku”となります。)

$ heroku create
Creating app... done, ⬢ fathomless-castle-33621

--remoteオプションにより、”heroku”以外に名称をつけることができます。

$ heroku create --remote staging
Creating app... done, ⬢ blooming-brushlands-31560

上記の手順を踏むと、リモートリポジトリは下記のようになります。

$ git remote --v
heroku  https://git.heroku.com/fathomless-castle-33621.git (fetch)
heroku  https://git.heroku.com/fathomless-castle-33621.git (push)
staging https://git.heroku.com/blooming-brushlands-31560.git (fetch)
staging https://git.heroku.com/blooming-brushlands-31560.git (push)

デプロイ

ローカルのmasterからデプロイ

$ git push heroku master

このコマンドは、以下と同値です。ローカルのmasterから、リモートのmasterにpushしているのが分かりますね。

$ git push heroku master:master

ローカルのブランチからデプロイ

$ git push heroku <branch name>:master

ブランチの方がmasterよりbehindの場合などはpushに失敗してしまうため、--forceが必要。

タグからデプロイ

$ git push heroku refs/tags/<tag name>:master

別appにデプロイ

別のappにデプロイしたい場合は、対応するリモートリポジトリにpushすればOK。
以下は、staging環境に、developmentブランチの内容をpushする例。

$ git push staging development:master

まとめ

リモートリポジトリをうまく活用することで、ブランチとappを紐づけた管理ができそうです。
git pushでデプロイされるので、非常に手軽で良いですね♪

参考