hubotをすでにslackと連携していて、全く同じbotを別のslackに繋げたらいいな、
起動時のパスでトークン渡してるんだから、別のトークン渡せばいいんじゃない?と思ったんです。
ところがうまくいかなかったので調べました。
雰囲気から察するに、複数起動できない時やはslack adapter関係なさそうなので、
複数のhubotを起動したかったんだけどうまくいかない!っていう時はチェックしてみてください。
TL;DL
- hubotを複数起動するにはPORT環境変数の指定が必要なことがある
- bin/hubot はシェルスクリプトなのでお気に召すままカスタマイズ
やってみた
エラーがでて2個目が起動しません。
[Wed Apr 25 2018 13:35:47 GMT+0900 (JST)] ERROR Error: listen EADDRINUSE 0.0.0.0:8080
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1367:14)
at listenInCluster (net.js:1408:12)
at doListen (net.js:1517:7)
at _combinedTickCallback (internal/process/next_tick.js:141:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
ということでググってみると、
-デフォルトでport 8080として起動する
-変更するには環境変数PORTを設定する
ということがわかりました。
また、 hubot の bin/hubot は実はshell scriptなので、こいつの中で環境変数を設定してやればいいようです。
せっかくなので、起動用のスクリプト内でtoken指定やadapter 指定もしてしまいましょう。
ついでに npm installをこのスクリプトが毎回やっているのですが、起動が遅くなるので必要なタイミングで自分でnpm installできるなら消してしまっていいと思います。
そんな感じで出来上がった起動スクリプトがこんな感じ
#!/bin/sh
set -e
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
#他と被らないPORTを指定する
export PORT=8091
#slack token
export HUBOT_SLACK_TOKEN=xxx-99999999999-XXXXXXXXXXXXXXXXXXXX
#-a(--adaptor)でアダプターを決め打ちする
exec node_modules/.bin/hubot --name "hubots" "$@" -a slack
2個目のhubotについては、これをコピーしてslack tokenとportだけ書き換えればOKです。