Hubot と HipChat で ChatOps
ここ最近、ChatOps というワードをよく耳にするようになりました。ChatOps の取り組みを行うにあたっての1つの手段として Hubot があります。Hubot については色々なサイトに記載されています。
GitHub社謹製! bot開発・実行フレームワーク「Hubot」:連載|gihyo.jp … 技術評論社
開発する上で何らかしらのチャットツールを利用しているところは多いかと思います。その チャットツールと Hubot を連携させることでテストやビルドやデプロイなどをチャット上から実行し結果をチャット上に通知することができます。それにより、チーム全体で状態を把握することができます。
今回は Hubot と HipChat を連携させ、HipChat 上から Hubot にレスポンスを投げ Hubot が応答する仕組みを作ります。
使ったもの
- Mac
- Hubot
- HipChat
※ Hubot のインストールについては以下を参照してください。
Mac に Hubot をインストール - tunanosuke memo
HipChat に Hubot 用アカウントを作成
HipChat から Hubot にレスポンスを投げるには専用のアカウントを用意する必要があります。そのため始めに Hubot 用のアカウントを作成しておきます。以下のような Hubot ユーザを作りました。
Adapter をインストール
Hubot と HipChat を連携させます。連携させるには Adapter が必要です。HipChat からの情報をスクリプトで解釈し、それを HipChat に伝える仲介役のような役割を担います。HipChat 用の Adapter は以下のコマンドでインストールします。
もしくは package.json に
を追記し npm install しても可能です。HipChat 意外のチャットツールと連携させたい場合はそれに合った Adapter をインストールすれば OK です。
インストール完了したら、環境変数を設定します。bin/hubot を編集します。
#!/bin/sh
set -e
npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
export HUBOT_HIPCHAT_JID="Hubot 用アカウントの JID (Jabber ID)"
export HUBOT_HIPCHAT_PASSWORD="Hubot 用アカウントのパスワード"
export HUBOT_HIPCHAT_ROOMS="ルームの JID (Jabber ID)"
export HUBOT_LOG_LEVEL="debug"
exec node_modules/.bin/hubot "$@"
Jabber ID は "hoge_hoge@chat.hipchat.com" の形式の ID です。アカウント設定、ルーム設定から確認できます。
スクリプトを作成し Hubot と会話
Hubot と HipChat の連携が可能になったので、Hubot に対して送ったメッセージをそのままリピートするスクリプトを書いてみました。
module.exports = (robot) ->
robot.respond /(.*)/i, (msg) ->
msg.send "#{msg.match[0]}"
スクリプトは coffeescript で書いています。Hubot を起動してメッセージを送り Hubot から応答があるか試してみます。
bin/hubot -a hipchat
-a オプションを付けることで使用する Adapter を指定することができます。起動したら HipChat から "good morning" と送ってみます。
こんな感じでメッセージをリピートしてくれます。
チャットツールを使うことで状態を把握でき、色々自動化できそうなので運用がかなり効率化できそうです。
HipChat で CI する - tunanosuke blog