hello-world.jp.net
webエンジニアのメモ。とりあえずやってみる。

HubotをHipChatで動かしてみる

公開日時

すごく今さら感はありますが、 HubotHipChat も聞いたことがあるだけで使ったことがなかったので使ってみました。

先日のRubyKaigi2014で「 Continuous Delivery at GitHub」の講演を聴いて、「chat opsすごく便利だ」と思ったのがきっかけです。

1. HipChat

とりあえずHipChatのアカウント登録を済ませ、ログイン後、「GroupAdmin」の「Users」、「Add user」でHubot用のアカウントを追加

hubot1

指定したメールアドレスに招待が届くので、ログイン情報を登録。

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」と打つと

hubot3

こんな事を言ったり、

hubot2

こんな事を言ったりします。

今回はとりあえず、HipChatとHubotを連携するところまでをやってみました。

今後は、Hubot経由でデプロイできるように改良していきたいと思います。

新しいことに触れる時間を増やしていかないと。

参考


Related #CoffeeScript

[rails]erbとunderscore.jsを一緒に使ったらundefined local variables in templatesエラーが発生

erbのテンプレート内にunderscore.js用のテンプレートを記述していたら

CoffeeScript メモ その1

『 CoffeeScriptファーストガイド』を読んでのメモ その1。

CoffeeScriptでカウントダウンタイマーを作ってみる

参考URLに記載されていたjsのカウントダウンタイマーをCoffeeScriptで書いてみました。