slackにHubotを導入(Heroku経由)
Date:2014-07-11 20:34:00 +0900
Categories: TECHNOLOGY
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