2011-11-01 19:25:36 +0900
Campfireで使うbotをHubotに乗り換えた。
数ヶ月前からGithubを真似てチームで利用しているCampfireにbotを常駐させていたのだけど、そのGithubからHubotがオープンソースで公開されたので、そちらに乗り換えることにした。
ちなみに、これまではjoshwand/campfire-botをforkして簡単なプラグインを書いて使っていた。
Hubotを動かす環境はこれまでのbotと同様Herokuにしたので、基本的にはDeploying Hubot onto Herokuに書かれた手順で問題なくインストール&デプロイできた。
まず、ローカルにHubotのアーカイブをダウンロードして展開する。
$ curl -L -O https://github.com/downloads/github/hubot/hubot-1.1.7.tar.gz
$ tar xvf hubot-1.1.7.tar.gz
展開してできたhubot
ディレクトリに入り、gitリポジトリを作成してすべてのファイルをコミットする。
$ cd hubot
$ git init
$ git add .
$ git commit -m 'Initial commit'
Githubリポジトリをリモートとして追加
Hubotのスクリプトをチームでカスタマイズしていく場合は、Github上にリポジトリを作ってリモートとして追加しておく。
$ git remote add origin ...
$ git push origin master
ローカルでの動作確認
Hubotの実行にはredisが必要なので、Homebrewでインストール&起動しておく。
$ brew install redis
$ redis-server /usr/local/etc/redis.conf
Campfireに接続するために必要な設定を環境変数で定義する。
$ export HUBOT_CAMPFIRE_ACCOUNT='your-subdomain'
$ export HUBOT_CAMPFIRE_TOKEN='...'
$ export HUBOT_CAMPFIRE_ROOMS='999999'
HUBOT_CAMPFIRE_ACCOUNT
にはCampfireで使用しているサブドメインを、HUBOT_CAMPFIRE_TOKEN
にはAPIアクセスに使用するトークンを、HUBOT_CAMPFIRE_ROOMS
には入室させるルームのIDをそれぞれ設定する。
ソースにはProcfile
が含まれているので、foremanで以下のように起動するか、
$ foreman start
もしくはProcfile
に書かれているapp
プロセスの内容を直接実行する。
$ bin/hubot -a campfire -n Hubot
これで、redisへの接続が完了した後にbotがルームに入室してくるので、動作を確認する。
Herokuへのデプロイ
HerokuのcedarスタックでHubot用のアプリケーションを作成する。
$ heroku create --stack cedar my-cool-hubot
heroku
にコードをpushしてデプロイする。
$ git push heroku master
app
プロセスを1つ起動する。
$ heroku ps:scale app=1
Scaling app processes... done, now running 1
redistogo
アドオンのnano
プラン(無料)を有効にする。
$ heroku addons:add redistogo:nano
-----> Adding redistogo:nano to qnyp-hubot-production... done, v5 (free)
Campfireに接続するために必要な設定を定義する。
$ heroku config:add HUBOT_CAMPFIRE_TOKEN='...'
$ heroku config:add HUBOT_CAMPFIRE_ROOMS='999999'
$ heroku config:add HUBOT_CAMPFIRE_ACCOUNT='your-subdomain'
これで、Heroku上で稼働するbotがルームに入室してくる。
うまく動かないようなら、heroku logs
でログを確認したり、heroku ps
でapp.1
プロセスがちゃんとup
状態になっているか確認する。