Edited at

Heroku上でHubotを動かす

More than 5 years have passed since last update.

hubotをheroku上にデプロイして動かしてみようと思います。

連携するチャットツールはSlackです。


Herokuの準備

imgres.jpg

アカウントの作成と各種ツールの設定をします。


Herokuアカウントの作成

公式サイトでアカウントをつくります。


Heroku Toolbeltのインストール

こちらからHerokuを操作するためのCLIツールをインストールする。

インストールしたらバージョンを確認します。

% heroku version

heroku-toolbelt/3.9.1 (x86_64-darwin10.8.0) ruby/1.9.3


Herokuログイン

Heroku Toolbeltからログインします。heroku loginコマンドで対話形式で答えていき、メールアドレスやパスワード、SSH鍵を登録していきます。

% heroku login


nodeインストール

Hubotはnode製なので入れておきます。

node-js-logo.png

公式ページよりパッケージをダウンロードし、インストールする。

homebrewでインストールしている人もいますが、とりあえず今回は公式から落とします。

↓こんな感じの画面が出ます。

mode-npm-osx.jpg

インストールが終わったらバージョンを確認する。

% node -v

v0.10.29

% npm -v
1.4.14


Hubotアプリの作成

hubot.png


事前準備

npmhubotcoffee-scriptをインストールします。

% npm install -g hubot coffee-script


プロジェクトの作成

Herokuにデプロイするプロジェクトを作成します。

下記コマンドでHubot用のプロジェクトディレクトリを作成します。

※カレントディレクトリに注意。

% hubot --create mybot


Slack Adapter

次にSlack Adapterを入れます。--saveオプションを付けることで、package.jsonに記述されます。

% cd mybot

% npm install --save hubot-slack

また、Procfileに使用するadapterのデフォルト値が記載されているのでこちらも変更しておく。


Procfile

web: bin/hubot -a slack



Gitリポジトリの作成

Herokuへのデプロイはgitにより行うため、リポジトリを作成し登録します。

% git init

% git add .
% git commit -m "initial commit"


Herokuへのデプロイ


Dynosの作成

heroku createコマンドで Dynos を作成する。

DynosはHerokuにおける仮想マシンのことを指しているみたいです。

% heroku create hogebot

Creating matsbot... done, stack is cedar
http://hogebot.herokuapp.com/ | git@heroku.com:hogebot.git

ダッシュボードを見ると確かにできています。(らくちんやね)

また、この時作成されたURLはDynosの環境変数と、Slack側の設定に入れる必要がある。


環境変数の設定

SlackのIntegrationのところに記載してあるパラメータを確認する。

slack-hubot-1.png

heroku config:addコマンドでパラメータを変更する。

なお、この時変更されるDynosは.gitにリモートリポジトリとして登録されているDynosになる。

heroku createで作成した際には自動でリモートに登録されるが、管理画面から作成したり、作りなおしたりすると異なるDynosが登録されていることがあるので注意すること。

% heroku config:add HEROKU_URL=http://hogebot.herokuapp.com     ← Dynos毎に生成されるURL

% heroku config:add HUBOT_SLACK_TOKEN=xDagElsrMxDhAiECQ9DqJGpr
% heroku config:add HUBOT_SLACK_TEAM=hogehoge
% heroku config:add HUBOT_SLACK_BOTNAME=hogebot


デプロイ

git pushでデプロイする。

% git push heroku master


Slackの設定

最後にSlack側のHubot IntegrationにHerokuのURLを登録する。

今回は http://hogebot.herokuapp.com になる。

slack-hubot-2.png


動作確認

Slack上で @hogebot: ping とかやって確認してみてください。


感想

Herokuは敷居が高い印象でしたが、使ってみるとデプロイ周りが超カンタンでした。

自動でリモートリポジトリが登録されているなど、仕様はちゃんと理解する必要がありそうです。