読者です 読者をやめる 読者になる 読者になる

Hubot+Heroku+Slackのステージング環境をブランチを切って作成する

Node.js Git

最近Slackを使い始めたので,Hubotとも連携させたいなと思い実行.

Hubotで西木野真姫bot作ってSlackに呼ぶ - MEMOGRAPHIX

上記サイトを参考にしました.意外と簡単にできる. この時に「ステージング環境もherokuに作りたい場合はどうするのだろう」と気になったのでメモ.

本番環境をforkしてコピー

まずはherokuの本番環境をfork

heroku fork -a APPNAME APPNAME-staging

これでアドオンや環境変数もコピーされる. configを確認したい場合は

heroku config --app APPNAME

あるいは

heroku config --app APPNAME-staging

ステージング環境用のブランチを切る

git checkout -b staging

次にステージング環境用のリモートリポジトリを追加

git remote add APPNAME-staging git@heroku.com:APPNAME-staging.git

ステージング環境にpush

そのままgit push APPNAME-staging stagingとしてもステージング環境にはデプロイされない.heroku側はmasterブランチにpushされたものだけをデプロイするためである.そのためstagingブランチをデプロイさせるために--forceオプションを使う.

git push APPNAME-staging staging:master -f

これでステージング環境へのデプロイが完了.

ここで

git  remote rename heroku APPNAME

とすると 本番環境にデプロイするとき

git push APPNAME master

ステージング環境にデプロイするとき

git push APPNAME-staging stagig

ってなってわかりやすいと思う.

Slack側の変更

今の状態だとSlack側に反映されるのは本番環境のほうなので,ステージング環境を反映させる. Integrations->Existing Integrationsからhubotを選択して,Service ConfigurationのURLを

http://APPNAME.herokuapp.com/

http://APPNAME-staging.herokuapp.com/

に変更してSave Integrationする.

f:id:alice345:20140827071807p:plain

これでSlackにはステージング環境のhubotが反映される. URLを変えれば本番環境とステージング環境を切り替えられる.

所感

最初は「色々試してみたいからmasterブランチと本番環境を汚したくないな〜」と思ってはじめたのだけど,もっといい方法ありそう.とりあえずステージング環境なるもの自分でセッティングしたのは初めてなのでとりあえず満足.

参考URL

Heroku で既存の本番環境をコピーしてステージング環境を作る - Qiita

Herokuでステージング環境をブランチを切って作成する - KayaMemo