Hubot と HipChat で ChatOps

                   f:id:tunanosuke:20141109151616j:plain          f:id:tunanosuke:20141109151647j:plain

 ここ最近、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 ユーザを作りました。

 

f:id:tunanosuke:20141110115331p:plain

Adapter をインストール

Hubot と HipChat を連携させます。連携させるには Adapter が必要です。HipChat からの情報をスクリプトで解釈し、それを HipChat に伝える仲介役のような役割を担います。HipChat 用の Adapter は以下のコマンドでインストールします。

npm install hubot-hipchat --save

もしくは package.json

"hubot-hipchat": "^2.7.5"

を追記し 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" と送ってみます。

f:id:tunanosuke:20141110125306p:plain

こんな感じでメッセージをリピートしてくれます。

チャットツールを使うことで状態を把握でき、色々自動化できそうなので運用がかなり効率化できそうです。

 

HipChat で CI する - tunanosuke blog