開発のお手伝いボット Hubot で定期処理を自動化しよう! このエントリをはてなブックマークに登録

2014年01月22日

ダニーダニー / ,

はじめに

ダニーです。2年ぶりの登場です。
今回はHubotについて書きます。

Hubotとは

hubot
絵はisshie作です。

githubが作ってるbotフレームワークです。

http://hubot.github.com

何ができるのか

HipChat, Skype, IRC, その他チャット系のツールでbot用のユーザーを作成して、Hubotがそのユーザーとしてチャットにログインします。
そのユーザーにコマンドを話しかけると、Hubotがそのコマンドに応じた処理をして結果をbot用のユーザーがチャットで発言することで返してくれます。botなので定期的になにか発言したり、呼びかけに対してなにか自動で答えるというようなことができます。

何が嬉しいのか

普段の開発で定期的にやることなどをコマンドとして作成しておくと、そのコマンドをチャットで話しかけることでHubotが自動で処理してくれるようになるので、自動化ができます。
具体的には、サーバーのデプロイやCIのテストを実行したりとかできると思います。
自分でスクリプトを書くことで使い方はいろいろあります。

動かすのに主に必要なもの

  • Node.js
  • Redis

セットアップ

今回セットアップした環境はCentOS 6.4です。

epelのリポジトリを追加

$ sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

必要なパッケージをインストール

$ sudo yum install npm redis

redis起動

$ sudo /etc/init.d/redis start

coffee-scriptとhubotをインストール

$ sudo npm install -g coffee-script hubot
$ hubot --create mybot
$ cd mybot
$ npm install

動かしてみる

$ ./bin/hubot
Hubot> hubot ping
Hubot> PONG
Hubot> exit

自分でスクリプトを書いてみる

scripts/hi.coffee

# Commands:
#   hubot hi

module.exports = (robot) ->
  robot.respond /hi/i, (msg) ->
    msg.send 'hi'

動かしてみる

$ ./bin/hubot
Hubot> hubot hi
Hubot> hi
Hubot> exit

HipChatで使えるようにする

弊社では開発プロジェクトでHipChatを利用しているので、HipChatで使えるようにします。

HipChatで使えるようにするのにhubot-hipchatをインストールします

$ sudo yum install libicu-devel
$ npm install hubot-hipchat --save

HipChatで起動するためのスクリプトを作る

run.sh

#!/bin/bash

export HUBOT_HIPCHAT_JID="jid"
export HUBOT_HIPCHAT_PASSWORD="password"
bin/hubot --adapter hipchat

HUBOT_HIPCHAT_JIDはHipChatにログインした時にある設定項目の、Account Infoのjabber IDの値を設定します。
jabber

HUBOT_HIPCHAT_PASSWORDはhipchatにログインするときのパスワードを設定します。

起動

$ ./run.sh
[Fri Jan 10 2014 09:46:01 GMT+0000 (UTC)] INFO Connecting HipChat adapter...
[Fri Jan 10 2014 09:46:06 GMT+0000 (UTC)] INFO Connected to hipchat.com as @dannybot
[Fri Jan 10 2014 09:46:06 GMT+0000 (UTC)] WARNING The HUBOT_AUTH_ADMIN environment variable not set
[Fri Jan 10 2014 09:46:06 GMT+0000 (UTC)] INFO Data for brain retrieved from Redis
[Fri Jan 10 2014 09:46:06 GMT+0000 (UTC)] 36233_test@conf.hipchat.com

動かしてみる

hi

Jenkinsで特定のジョブを実行するのを作成する

urlはJenkinsのサーバーのホスト名を設定します。
今回の例のJenkinsのサーバーはbasic認証をかけているので、userとpasswordはbasic認証で設定しているユーザー名とパスワードです。

scripts/jenkins-job.coffee

# Commands:
#   hubot jenkins-job <job name>

module.exports = (robot) ->
  robot.respond /jenkins-job (.*)/i, (msg) ->
    config =
      url: 'http://'
      user: 'user'
      password: 'password'
    job = msg.match[1]
    msg.send "job: #{job}"
    auth = new Buffer("#{config.user}:#{config.password}").toString('base64')
    robot.http("#{config.url}/job/#{job}/build")
      .header('Authorization', "Basic #{auth}")
      .get() (err, res, body) ->
        msg.send "error: #{err}"
        msg.send "res: #{res}"
        msg.send "body: #{body}"

動かしてみる

jenkins-job

終わりに

Hubotを使うと毎回定期的な処理などをbotに話しかけることで、処理できるようになるので、開発時の自動化の参考にしていただければと思います。

関連記事

クレイについてもっと知りたい方は…

  1. クレイの3つの強みを見てみる。
  2. WEBシステムのことなら何でもご相談ください。

「いいね!」で応援よろしくお願いします!

このエントリーに対するコメント

コメントはまだありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


トラックバック

we use!!Ruby on RailsAmazon Web Services

このページの先頭へ