0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuDeployerを使った GitHub から heroku への自動デプロイ

0
Last updated at Posted at 2017-01-26

(注)2015年に書いた記事を試験的に Qiita にあげてみたものですので、内容が古くなっています。ご注意ください。

動作概要

HerokuDeployer
を参考に。ちと複雑。

役回りは3つ:

  • github source:git@github.com:username/xxx-blog.git
  • deployer: xxx-deployer.herokuapp.com
  • blog: xxx-blog.herokuapp.com

とする。動作としては、

  1. ローカルで post などを作成し、ローカルレポに commit
  2. github に push (git push origin master)
  3. github の hook が働き内容を deployer に渡す
  4. それを受けて deployer が blog に deploy する

設定

github と blog はすでにあるはずなので、 deployer の作成と三者の接続の設定をする。

deployer 用 heroku アカウント、アプリの作成

まずblog用のアカウント(username@address.com とする)とは別に、deployer としての heroku アカウントを作成する(username-deployer@address.com とする)。

そのアカウント上で、HerokuDeployer を clone し deployer のherokuアプリも作る。

% git clone https://github.com/himynameisjonas/heroku-deployer.git
% cd heroku-deployer
% heroku login
(deployer の e-mail/password を入力)
% heroku create xxx-deployer   # as deployer
% git push heroku master

blog と deployer の接続

まず xxx-blog app と xxx-deployer app を接続する。

collaborator の設定

blog用アカウントで heroku の web にログインし、
Personal Apps => xxx-blog => Access => Edit で
deployer用アカウントのメールアドレスを入力し、collaborator に追加する。

SSH の設定

blog=deployer をつなぐ SSH Key を作成する。

% ssh-keygen -t rsa
(save it to "deploy_rsa")
(empty for passphrase)

つなぎ方としては、秘密鍵を deployer に、公開鍵を blog に持たせる。

秘密鍵:

% heroku config:set DEPLOY_SSH_KEY="$(cat deploy_rsa)"

公開鍵:

heroku の web: username@address.com => Account => SSH Keys => Edit
で deploy_rsa.pub の内容を追加し save。

deployer - github の接続

続いて deployer app と github のレポをつなげる。

SSH の設定

秘密鍵を deployer に、公開鍵を github に持たせる。

% ssh-keygen -t rsa
(save it to "blog_rsa")
(empty for passphrase)

deploy 側:

% heroku config:set xxx-blog_SSH_KEY="$(cat blog_rsa)"

github 側:

web: username/xxx-blog repo => settings => Deploy keys => Add Deploy Keys
に blog_rsa.pub の内容を追加。

secret key の設定

deployer 側:

% heroku config:set DEPLOY_SECRET=XXXX  # XXXX は当然秘密のコード

github の web hook の設定

githubのwebから username/xxx-blog repo => settings => Webhooks & Servies に
"https://xxx-deployer.herokuapp.com/deploy/xxx-blog/XXXX"を追加。

これで当該レポに push されたら hook で deployer に更新内容を渡すようになる。

レポジトリの設定

% pwd
heroku-deployer
% heroku config:set xxx-blog_GIT_REPO=ssh://git@github.com/username/xxx-blog
% heroku config:set xxx-blog_HEROKU_REPO=git@heroku.com:xxx-blog.git

動作確認

適当にポストを追加・修正し commit, git push origin master し、
少し待ってから xxx-blog.herokuapp.com の方に反映されるか確認。

heroku logs を見てみてもよい。

おまけ

。。。。正直こんなメンドくさいことやらなくても、素直に herokuapp に push したほうがいいような気も。。。prose.io で編集したときは反映されないけど、
一旦 local で origin を pull(fetch+merge) して push heroku すればいいわけだし。

0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?