Herokuとgitあれこれ
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でデプロイされるので、非常に手軽で良いですね♪
参考
- Deploying with Git
- Managing Multiple Environments for an App
- 環境ごとに変数を変える方法、環境をforkして使う方法などが載っています