search
LoginSignup
19

More than 5 years have passed since last update.

posted at

updated at

さくらvps+hubot+Slackでslack botをつくる

概要

gitとslackを連携させるためにhubotを使ってSlack botつくってみようというお話です。

herokuの例は沢山あったのですが、vpsの例があんまりなくて正直カンタンにできるのかな・・と不安だったのですが案外カンタンにできました。

今回はbotをつくってbotが生きているか否か確認するところまでやりたいと思います。

環境

  • さくらのVPS
  • CentOS6こと通称遷都くん
  • (phpは6.5くらいだったけど今回別に関係ないですね。)

前提

  • Slackに登録している、使える
  • vps環境のセットアップ完了済み

nvm/npm/node.js/redisをインストール

バージョンが云々という話はおいておき、参考サイトと同じようにインストールします。

まずはnvm,npm(nodejsのバージョン管理),nodejsをインストール。

git clone https://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh
nvm install iojs

ログイン時(vps接続時) にnvmとnode.jsを有効にするため、~/.bashrc, ~/.profile, ~/.zshrcのいずれかに以下を追記。

source ~/.nvm/nvm.sh

※cd / にそれぞれのファイルがあります。

再接続するなりしてそれぞれバージョン確認。

nvm -v, node -v, npm -v

※エラーなくインストールできたはずなのにコマンドが見つかりませんってなんだよ・・・という方は以下をお試しください。
・sourceから始まるコマンドを叩いて実行する
・シェルスクリプトにコマンドを記述しているか、正しい確認(vps接続の度にコマンドが見つからない場合はこの可能性大)

次はredis。

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo yum install -y redis
sudo chkconfig redis on
sudo service redis start

redis -v でバージョン確認。

hubotをインストール

hubotをインストール。
npm install -g hubot coffee-script
npm install -g generator-hubot

hubotを管理するディレクトリをつくります。
mkdir hoge
(chmod -R 777 hubot)
パーミッションは777でなくてもいい気がしますが、その辺はスルーで。。。(:3」∠)
(後ほどhubotのインストールでパーミッション云々と言われた場合はこのこのディレクトリの権限も疑ってみてください。)

hubotを創ります(ゴ、ゴ、ゴ、、
cd hoge

yo hubot

すると・・

スクリーンショット 2016-07-10 23.41.11.png

カ◯タムロボとアッ◯イを足して2で割った用なロボがでてきます。

Owner
Bot name
Description

はそれぞれご自由に、

Bot adapter

は今回はslackのbotなので"slack"としてください。

botが正しく動いているがどうかはbin/hubotを実行すると確認できますが詳しくは参考サイトへ(:3」∠)

Slackと連携

無事hubotが生成されたら、今度はslackにいき、hubotを導入してください。
SlackのIntegrationsでhubotが選択できるのですが、Slackの設定画面等に不慣れな方は
「Slack hubot」とかで検索すると早いです。

hubotを導入したらHUBOT_SLACK_TOKEN=xxxxxxxxxxxxをコピっといてください。

vpsに戻り、先ほどhubotを生成したディレクトリ(binとかscriptとか入っている階層)に移動します。

cd hoge

シェルスクリプトかきます。

vim hoge.sh

追記:hubot-scripts.jsonは使用しないので削除しておきましょう。pm2 logsとかで確認すると「空だから消しておけよな」とログに出力されていると思います。

#!/bin/sh

export HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxx


./bin/hubot --adapter slack

実行権限を付与。
chmod u+x hoge.sh

シェルスクリプトが実行できるか確認。
./hoge.sh

pingと打ったらPONGと帰ってこればOKです。詳しくは参考サイト

追記: external-scripts.jsonにデフォルトで設定してあるherokuのkeep-aliveは、herokuを利用しない場合は削除しておいても良いでしょう。

デーモン化

作成したスクリプトを常時実行(永続化)するためにデーモン化します。
foreverとかpm2とかあるみたいなのですが、私の環境ではpm2がさらっと導入できたのでpm2でデーモン化します。

npm i -g pm2
pm2 start ./hoge.sh

デーモン化されているか確認。
pm2 list

所感

coffee scriptやシェルスクリプトを駆使すれば色んなことができますね!

参考

CentOSにHubotを導入してSlackと連携させる
Hubot-Slack を VPS へインストール

その他

bmf-tech.com

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
19