前提
- Heroku Toolbelt が事前にインストールしてあること
- 複数の Heroku アカウントそれぞれで利用する 公開鍵/秘密鍵 が生成してあること
- 複数の Heroku アカウントそれぞれで Heroku app が作成してあること
heroku-accounts をインストール
1 . 複数のアカウントを切り替え可能にするためのプラグインをインストールします
$ heroku plugins:install heroku-accounts
複数の Heroku アカウントを登録
1 . 管理するアカウントを追加します
-
workという仮想アカウント名で Heroku のアカウントを追加する - メールアドレス/パスワードの入力をする
$ heroku accounts:add work
-
privateという仮想アカウント名で Heroku のアカウントを追加- メールアドレス/パスワードの入力をする
$ heroku accounts:add private
2 . 追加したアカウントを確認します
$ heroku accounts
* private
work
3 . work アカウントの設定を行います
-
workアカウントに切り替える
$ heroku accounts:set work
-
workアカウントの公開鍵設定を追加する-
workアカウントで利用する公開鍵を Heroku に登録します
-
$ heroku keys:add ~/.ssh/work.pub
-
work仮想アカウントのSSH接続設定を~/.ssh/configに追記する-
heroku.[仮想アカウント名]という仮想的な Host を定義する
-
$ vi ~/.ssh/config
Host heroku.work
port 22
HostName heroku.com
IdentityFile ~/.ssh/work.pem
User git
TCPKeepAlive yes
IdentitiesOnly yes
work アカウントの git リモートリポジトリ接続設定を追加する
- 下記コマンドで git のリモートリポジトリ接続設定を行う
$ git remote add heroku-work git@heroku.[仮想アカウント名]:[Herokuアプリケーション名].git
- 仮想アカウントが
workで、test-app-workという Heroku アプリケーションだった場合は下記コマンドを実行します
$ git remote add heroku-work git@heroku.work:test-app-work.git
- リモートリポジトリを確認します
$ git remote -v
...
heroku-work git@heroku.work:test-app.git (fetch)
heroku-work git@heroku.work:test-app.git (push)
...
-
workアカウントで git push する場合は下記コマンドを実行します
$ git push heroku-work master
4 . private アカウントの設定を行います
-
privateアカウントに切り替える
$ heroku accounts:set private
-
privateアカウントの公開鍵設定を追加する-
privateアカウントで利用する公開鍵を Heroku に登録します
-
$ heroku keys:add ~/.ssh/private.pub
-
privateアカウントの秘密鍵を設定する-
heroku.[仮想アカウント名]という仮想的な Host を定義する
-
$ vi ~/.ssh/config
Host heroku.private
port 22
HostName heroku.com
IdentityFile ~/.ssh/private.pem
User git
TCPKeepAlive yes
IdentitiesOnly yes
private アカウントの git リモートリポジトリ接続設定を追加する
- 下記コマンドで git のリモートリポジトリ接続設定を行う
$ git remote add heroku-private git@heroku.[仮想アカウント名]:[Herokuアプリケーション名].git
- 仮想アカウントが
privateで、test-app-privateという Heroku アプリケーションだった場合は下記コマンドを実行します
$ git remote add heroku-work git@heroku.work:test-app-private.git
- リモートリポジトリを確認します
$ git remote -v
...
heroku-private git@heroku.private:test-app-private.git (fetch)
heroku-private git@heroku.private:test-app-private.git (push)
...
-
privateアカウントで git push する場合は下記コマンドを実行します
$ git push heroku-private master