概要
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
すると・・
カ◯タムロボとアッ◯イを足して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 へインストール