環境構築

MacにインストールしたHubotをherokuにデプロイしてslackと連携

hubot-avatar
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。

前回、MacBook AirにHubotをインストールするために必要な事前準備としてnode.jsnpmをインストールしました。今回は、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-command-line

$ 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」から

slack-integration

 

「Hubot」と検索し、黄色いヘルメット?です。

make-slack-even-better

「Install」しましょう。

Hubot-profile

HubotのUsernameを決めます。
今回は「test-bot」にしていますが、適宜変更してください。

Hubot-username

追加されるとAPIトークンが付与されます。それを使ってheroku側で環境変数設定します。

Hubot-instractions

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だ。

ping-PONG

うまくできた。

参考サイト
http://qiita.com/KeitaMoromizato/items/8d56951f7e6fa57f9a93
http://qiita.com/yuzushioh/items/ba5bfe0899f744b56860

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました