前提
- 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