はじめに
ダニーです。2年ぶりの登場です。
今回はHubotについて書きます。
Hubotとは
絵はisshie作です。
githubが作ってるbotフレームワークです。
何ができるのか
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の値を設定します。
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
動かしてみる
Jenkinsで特定のジョブを実行するのを作成する
urlはJenkinsのサーバーのホスト名を設定します。
今回の例のJenkinsのサーバーはbasic認証をかけているので、userとpasswordはbasic認証で設定しているユーザー名とパスワードです。
scripts/jenkins-job.coffee
# Commands:
# hubot jenkins-job
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}"
動かしてみる
終わりに
Hubotを使うと毎回定期的な処理などをbotに話しかけることで、処理できるようになるので、開発時の自動化の参考にしていただければと思います。
このエントリーに対するコメント
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
- トラックバック
「いいね!」で応援よろしくお願いします!