NOTO

slackにHubotを導入(Heroku経由)

 Date:2014-07-11 20:34:00 +0900
 Categories: TECHNOLOGY

はじめに

当社にもslackの波が今日きたっぽいので、さっそくGithubでみかけたHubot先輩を導入しようじゃないかと業務の隙を狙い撃ちして
導入してみました。今回手順の参考にさせていただいたのは「http://memo.sanographix.net/post/88371442780」です。
ありがとうございました。

まずはローカルで動かしてみる

必要そうなもの

・nodeとnpm 
・githubのアカウント
・herokuのアカウント(コマンドラインツールも)

nodeのインストール

atomエディタを入れた時に入れていたものを何かアンインストールしていたっぽいので、入れなおしました。
ダウンロードは → http://nodejs.org/download/

$ node --version
v0.10.29

$ npm --version
1.4.14

npmでhubotのインストール

hubotとbot氏にやることを書くのに使うらしいcoffee-scriptをインストールします。

$ npm install -g hubot coffee-script
C:UsersusernameAppDataRoamingnpmcoffee -> C:UsersusernameAppDataRoamingnpmnode_modulescoffee-scriptbincoffee
C:UsersusernameAppDataRoamingnpmcake -> C:UsersusernameAppDataRoamingnpmnode_modulescoffee-scriptbincake
C:UsersusernameAppDataRoamingnpmhubot -> C:UsersusernameAppDataRoamingnpmnode_moduleshubotbinhubot
coffee-script@1.7.1 C:UsersusernameAppDataRoamingnpmnode_modulescoffee-script
└── mkdirp@0.3.5

hubot@2.7.5 C:UsersusernameAppDataRoamingnpmnode_moduleshubot
├── log@1.4.0
├── optparse@1.0.4
├── scoped-http-client@0.9.8
├── coffee-script@1.6.3
└── express@3.3.4 (methods@0.0.1, fresh@0.1.0, mkdirp@0.3.5, cookie@0.1.0, cookie-signature@1.0.1, buffer-crc32@0.2.1, range-parser@0.0.4, send@0.1.3, debug@1.0.3, commander@1.2.0, connect@2.8.4)

$ hubot -v
2.7.5

ローカルでhubot氏が動くようにテストしてみる

まずはbotを登録し、できたディレクトリへ移動

$ hubot --create XXXbot
Creating a hubot install at XXXbot

$ cd XXXbot
$ ls
Procfile external-scripts.json scripts/
README.md hubot-scripts.json
bin/ package.json

とりあえず動くようになっているので、動かしてみる

$ binhubot
hubot@2.7.5 node_moduleshubot
├── optparse@1.0.4
├── log@1.4.0
├── scoped-http-client@0.9.8
├── coffee-script@1.6.3
└── express@3.3.4 (methods@0.0.1, range-parser@0.0.4, buffer-crc32@0.2.1, cookie-signature@1.0.1, fresh@0.1.0, cookie@0.1.0, mkdirp@0.3.5, debug@1.0.3, commander@1.2.0, send@0.1.3, connect@2.8.4)

hubot-scripts@2.5.15 node_moduleshubot-scripts
└── redis@0.8.4
Hubot> [Fri Jul 11 2014 17:48:10 GMT+0900 (東京 (標準時))] WARNING The HUBOT_AUTH_ADMIN environment variable not set
[Fri Jul 11 2014 17:48:12 GMT+0900 (東京 (標準時))] ERROR [Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]

一番下にエラーっぽいのがでたの調べてみると
「hubot-scripts.jsonから”redis-brain.coffee”を消せば良い」という神の声があったので、そうしてみたら確かに消えたのでまぁおっけ
もう一回起動してみる

$ binhubot
Hubot> hubot ping
Hubot> PONG

と返ってくるので多分生きてます。やったね。

ちょっとアレンジしてみる。

botにつけた名前でお察しくださいなのだけど、10行目くらい?をちょっとだけいじった。

module.exports = (robot) ->
robot.respond /PING$/i, (msg) ->
msg.send "なんのようだなっしー!!!!"

で同じことしてみた。

$ binhubot
Hubot> hubot ping
Hubot> なんのようだなっしー

お察しください。

heroku deployする

通信が必要なので、botを動かすためにherokuにdeployしてslackと連携できるようにしてあげます。
まずは、npmで一つインストールします。

$ npm install hubot-slack --save
hubot-slack@2.1.0 node_moduleshubot-slack

次にbotのディレクトリの中にあるProcfileに以下を記載

web: bin/hubot --adapter slack

この状態でgit addしてcommitします。
そしてgithubのリポジトリを作成しpushしてしまってください。

$ git init XXXbot
$ git add --all
$ git commit -m "first commit"
$ git remote add origin[https://github.com/xxxxx/xxxxx.git](https://github.com/xxxxx/xxxxx.git)
$ git push -u origin master

これでpush完了です。
つぎにherokuにdeployします。ログイン、区画作成、

$ heroku login
Authentication successful.
$ heroku create XXXXX
$ git push heroku master

続いてherokuのdyna?設定。この当たりは先駆者のもの丸パクリなので、あまりわかってないです。

$ heroku ps:scale web=1
$ heroku addons:add rediscloud
Adding rediscloud on XXXbot... failed
! Please verify your account to install this add-on plan
! For more information, see[https://devcenter.heroku.com/categories/billing](https://devcenter.heroku.com/categories/billing)
! Verify now at[https://heroku.com/verify](https://heroku.com/verify)

エラーがでて萎え萎え。要は、クレカ登録herokuでしてなってことらしいです。
で、クレカ登録を怯えながらしたあとサイド実行

$ heroku addons:add rediscloud
Adding rediscloud on XXXbot... done, v4 (free)
Use `heroku addons:docs rediscloud` to view documentation.

あっさり通る。

最後に、authやslackで使うための環境変数をheroku先輩に突っ込みます。

環境変数の登録

Slackの「Configure Integrations」でHubotを登録するとauthのための情報と使うherokuのアドレスを登録する画面が出てきます。
herokuのアドレスを入力しsaveします。
そしてその環境変数をherokuのコマンドで登録してあげると完了です。

$ heroku config:add HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ heroku config:add HUBOT_SLACK_TEAM=teamname
$ heroku config:add HUBOT_SLACK_BOTNAME=botname
$ heroku config:add HEROKU_URL=http://xxx.herokuapp.com

実験

これで作業完了で、slackを見てみると特に変化はなくmemberの中にもいないのですが、@でbot名にpingすると反応が帰ってきます。
やったー。

最後に

一応今後いろいろ昨日というかmtgの時間ぐらいは自動で投げ込めるようにできたらと思います。
30分ぐらいで(既にherokuとgithubをつかっていたので)できたので、さくっと出来て楽しめるので良いすなー。
Tweet