hubotをSlackと連携してデーモン化するまでの手順
Hubotをデーモン化してSlackと連携させた時のメモ。
以下のツールは導入してあること前提。
- apt
- nodejs
- npm
- npm
- hubot
- pm2
hubotとSlackの初期設定
まず、以下のコマンドでhubotを準備。
$ mkdir nametake-bot $ cd nametake-bot $ yo hubot _____________________________ / \ //\ | Extracting input for | ////\ _____ | self-replication process | //////\ /_____\ \ / ======= |[^_/\_]| /---------------------------- | | _|___@@__|__ +===+/ /// \_\ | |_\ /// HUBOT/\\ |___/\// / \\ \ / +---+ \____/ | | | //| +===+ \// |xx| ? Owner: nametake <nametake.kyarabuki@gmail.com> ? Bot name: nametake-bot ? Description: A simple helpful robot for your Company ? Bot adapter: (campfire) slack # ここでSlackをしっかり指定する ? Bot adapter: slack
以下のコマンドで、ちゃんとhubotが動くか確認。
$ ./bin/hubot ~~~ いろいろ出る ~~~ nametake-bot> nametake-bot ping nametake-bot> PONG
次に、SlackでhubotのConfigure Appsからhubotを連携させる。
連携させた後に、連携させた設定からHUBOT_SLACK_TOKEN
を取得。
取得したTOKENを元に環境変数を設定。
$ export HUBOT_SLACK_TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
環境を設定したらSlackと連携。
$ ./bin/hubot -a slack
Slackで@nametake-bot ping
とかやって連携しているか確認。
pm2でhubotをデーモン化
hubotを永続化するためにpm2というnode.js製のツールを使う。
pm2をjsonから起動するために、以下の様なapp.json
ファイルを作成。
{ "apps":[ { "name" : "hilbot", "args" : ["-a", "slack"], "script" : "./bin/hubot", "exec_mode" : "fork", "exec_interpreter" : "bash", "autorestart" : true, "env": { "NODE_ENV" : "production", "PORT" : "8080", } } ] }
HUBOT_SLACK_TOKEN
をJSONにまとめておきたい場合は、
env
の項目を以下のように書き換える。
"env": { "NODE_ENV" : "production", "PORT" : "8080" "HUBOT_SLACK_TOKEN" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
以下のコマンドでpm2でhubotをデーモン化。
$ pm2 start app.json
以下のコマンドでちゃんと動いているか確認。
$ pm2 list ┌──────────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │ ├──────────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ │ nametake-bot │ 0 │ fork │ 32342 │ online │ 1 │ 4D │ 79.945 MB │ disabled │ └──────────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
statusの欄がerrored
になっていたら、pm2 logs
というコマンドでログを確認して
エラーを修正する。
今回はリモートリポジトリに上げたhubotのソースをSlack上からpullさせたかったので、
ここのnew_update.coffee
を
丸々参考にさせて頂きました。