HubotをHipChatで動かしてみる
すごく今さら感はありますが、 Hubot も HipChat も聞いたことがあるだけで使ったことがなかったので使ってみました。
先日のRubyKaigi2014で「 Continuous Delivery at GitHub」の講演を聴いて、「chat opsすごく便利だ」と思ったのがきっかけです。
1. HipChat
とりあえずHipChatのアカウント登録を済ませ、ログイン後、「GroupAdmin」の「Users」、「Add user」でHubot用のアカウントを追加
指定したメールアドレスに招待が届くので、ログイン情報を登録。
Hubotアカウントでログイン後、「Account settings」=>「XMPP/Jabber info」を開き、「Jabber ID」をメモ。
2. Hubot
Hubotを動かすには
- Node.js
- npm
- Redis
が必要とのこと。
各々はインストール済みとして進めます。
- Hubot作成用に適当なディレクトリを作成
mkdir musashi
cd musashi
- インストール
npm install -g hubot coffee-script
- Hubot作成
hubot --create hubot
Hubotのベースとサンプルが追加されます
- HipChat用のモジュールを追加
npm install hubot-hipchat --save
- 動作確認
./bin/hubot
Hubot> hubot ping
Hubot> PONG
hubot ping と打つと、PONGと返って来ます。
- 何か機能を作ってみる scripts以下にsay.coffeeとしてファイルを設置
# Commands:
# hubot hi
phrases = ->
[
'この世に生まれて 十数年生きた そして死ぬ それだけのことだ',
'天は笑いはしない。',
'刀はただ人を斬る為だけに在る刃物 刀は刀をやめることはできない',
]
say = ->
shuffle(phrases())[0]
shuffle = (a) ->
for i in [a.length-1..1]
j = Math.floor Math.random() * (i + 1)
[a[i], a[j]] = [a[j], a[i]]
a
module.exports = (robot) ->
robot.respond /say/i, (msg) ->
msg.send say()
hubot say と打つと、バガボンドの武蔵の名言を返してくれるようにしてみました。
- HipChat連携スクリプトを作成
vi run.sh
#!/bin/bash
export HUBOT_HIPCHAT_JID="xxxxxxxxxxx@xxxxxxxxxxxxxx"
export HUBOT_HIPCHAT_PASSWORD="xxxxxxxxxxxxxxx"
bin/hubot --adapter hipchat
- 実行権限追加
chmod +x run.sh
- Hubot起動
./run.sh
この状態で、hubotをroomに招待し、「musashi say」と打つと
こんな事を言ったり、
こんな事を言ったりします。
今回はとりあえず、HipChatとHubotを連携するところまでをやってみました。
今後は、Hubot経由でデプロイできるように改良していきたいと思います。
新しいことに触れる時間を増やしていかないと。