Sooey

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 psapp.1プロセスがちゃんとup状態になっているか確認する。