MacにインストールしたHubotをherokuにデプロイしてslackと連携
前回、MacBook AirにHubot
をインストールするために必要な事前準備としてnode.js
とnpm
をインストールしました。今回は、Hubot
をインストールして、slackと連携します。
1.npmでHubotジェネレーターをインストール
npmコマンドでインストール。
$ npm install -g yo generator-hubot
...
...
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
...
...
2.botの作成
bot用のディレクトリを作成して、そこでHUBOTを作成。
$ mkdir Hubot
$ cd Hubot
$ yo hubot
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes
_____________________________
/ \
//\ | Extracting input for |
////\ _____ | self-replication process |
//////\ /_____\ \ /
======= |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
? Owner hoge@hoge.co.jp
? Bot name hubot
? Description A simple helpful robot for your company
? Bot adapter slack
create bin/hubot
create bin/hubot.cmd
create Procfile
create README.md
create external-scripts.json
create hubot-scripts.json
create .gitignore
create package.json
create scripts/example.coffee
create .editorconfig
_____________________________
_____ / \
\ \ | Self-replication process |
| | _____ | complete... |
|__\\| /_____\ \ Good luck with that. /
|//+ |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
makabot@0.0.0 /Users/owani/Work/Hubot
...
...
botの作成が完了しました。
3.herokuのインストール
heroku toolbeltのインストールです。インストール済の場合はもちろん不要。
https://devcenter.heroku.com/articles/heroku-command-line
今回使用していたOSはOS X
でしたのでそれを選択します。
$ heroku --version
Your version of git is 1.9.3. Which has serious security vulnerabilities.
インストールできました。
4.herokuへデプロイ
herokuでプロジェクト作成
以下のtest-bot
は任意の名前に変更
$ heroku create test-bot --stack cedar
Your version of git is 1.9.3. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
Creating ⬢ test-bot... done, stack is cedar-14
https://test-bot.herokuapp.com/ | https://git.heroku.com/test-bot.git
herokuで(アカウントを作成して)ログインし、管理画面をみると
test-bot
というアプリケーションが新規作成されているのを確認できる。
Install the Heroku CLI
herokuのアカウントでログインします。
$ heroku login
Create a new Git repository
git init
で初期化を実行します。
$ cd my-project/
$ git init
$ heroku git:remote -a test-bot
Deploy application
herokuへデプロイします。
$ git add .
$ git commit -am "make it better"
$ git push heroku master
herokuのadd-onでredisを設定(無料)
NoSQLのredisを設定します。
現在、無料は30MBまで利用可能だそうです。
$ heroku addons:add rediscloud
Your version of git is 1.9.3. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
Creating rediscloud on ⬢ test-bot... free
Created rediscloud-acute-51015 as REDISCLOUD_URL
Use heroku addons:docs rediscloud to view documentation
設定できました。気になるメッセージYour version of git is 1.9.3. Which has serious security vulnerabilities.
は、自分がいま使っているgitの1.9.3はセキュリティ的によくなのでアップデートしてあげないとダメだそうです。
『Redis Cloud』
https://elements.heroku.com/addons/rediscloud
herokuでプロセスの確認
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:Free
5.Slackとの連携
Slack側でHubotを追加
slackのメニュー「Apps&Integrations」から
「Hubot」と検索し、黄色いヘルメット?です。
「Install」しましょう。
HubotのUsernameを決めます。
今回は「test-bot」にしていますが、適宜変更してください。
追加されるとAPIトークンが付与されます。それを使ってheroku側で環境変数設定します。
herokuの環境変数設定
次の3つは各自の値で変更します。
HUBOT_SLACK_TOKEN
…SlackのAPIトークン
HUBOT_SLACK_TEAM
…Slackのチーム名
HUBOT_SLACK_BOTNAME
…Slackで使用するbotの名前
$ heroku config:set HUBOT_SLACK_TOKEN=bobv-8349948598421-Enfj45GJJoZO9Nvbd984lKA HUBOT_SLACK_TEAM=owani.net HUBOT_SLACK_BOTNAME=test-bot
Setting HUBOT_SLACK_TOKEN, HUBOT_SLACK_TEAM, HUBOT_SLACK_BOTNAME and restarting ⬢ test-bot... done, v6
HUBOT_SLACK_BOTNAME: test-bot
HUBOT_SLACK_TEAM: owani.net
HUBOT_SLACK_TOKEN: bobv-8349948598421-Enfj45GJJoZO9Nvbd984lKA
タイムゾーンも日本にしておく。
$ heroku config:add TZ=Asia/Tokyo
Setting TZ and restarting ⬢ makabot... done, v10
TZ: Asia/Tokyo
Hubot動作確認
$ bin/hubot
test-bot>
test-bot> test-bot ping
test-bot> PONG
6.うまくいっていないので原因を探る
hubot-slack
が足りなかったっぽい。
$ npm install hubot-slack --save
test-bot@0.0.0 /Users/owani/Hubot
└── hubot-slack@4.2.1
再度コミットしてPUSH
$ git commit -a
$ git push heroku master
...
...
remote: -----> Build succeeded!
remote: ├── hubot@2.19.0
remote: ├── hubot-diagnostics@0.0.1
remote: ├── hubot-google-images@0.2.6
remote: ├── hubot-google-translate@0.2.0
remote: ├── hubot-help@0.2.0
remote: ├── hubot-heroku-keepalive@1.0.2
remote: ├── hubot-maps@0.0.2
remote: ├── hubot-pugme@0.1.0
remote: ├── hubot-redis-brain@0.0.3
remote: ├── hubot-rules@0.1.1
remote: ├── hubot-scripts@2.17.2
remote: ├── hubot-shipit@0.2.0
remote: └── hubot-slack@4.2.1
...
...
7.動作確認
slackで話かけてみる。pingと話かけてPONGと返ってくれば動作確認OKだ。
うまくできた。
参考サイト
http://qiita.com/KeitaMoromizato/items/8d56951f7e6fa57f9a93
http://qiita.com/yuzushioh/items/ba5bfe0899f744b56860