ども。アッパーフィールドです。
ChatWork Advent Calendar 10 日目、がんばります。
みなさん待ちに待った念願のアイスソードではなく、ChatWork API が先日プレビュー公開されました。まだまだ機能は不十分かもですが、今後もアップデートしていきますので楽しみにお待ちください。
僕がチャットワークに入社して少ししてから、Twitter や GitHub、PivotalTracker、その他社内システムでの通知をチャットで行うような仕組みを社内で勝手に作ったりしておりました。今回 API が公開されたことによって、その仕組を皆さんにも使っていただけるんじゃないかと思い、公開 API 用に書き換えたものを Chabot という名で公開したので、こちらの紹介をさせていただこうかと思います。
あ、Chabot は僕が個人的に作ったものです。まだまだ開発中で足りないものもあります。なので使用上起きた問題についての責任は負いかねます。ご自身の責任でお使いくださいヽ(`▽´)/
では早速、Chabot で GitHub のコミット通知を ChatWork に送信する方法をご紹介します。
目次
- WebHook とは
- Chabot でできること
- heroku にデプロイしてみる
- GitHub の WebHook 設定
WebHook とは
Chabot は WebHook に対応しているサービスであれば、多分なんでも連携することがデキると思います。WebHook って、少し聞き慣れない言葉かもしれません。WebHook はサービス側の情報が更新されたことを、 サービス側が http で情報を通知 する仕組みです。
たとえば GitHub の場合、commit が push されると、その情報をただちに GitHub が送信します。その情報をどこに送信させるかはユーザーが指定することが出来ます。つまり、自分でサーバーを用意して、GitHub が送信してくるデータの受け口を用意することで、リアルタイム(?)に情報を受け取ることが出来ます。
Chabot でできること
Chabot を使うと何ができるかというと、前述のとおり WebHook を介してサービスやアプリと ChatWork を連携させるためのサーバーアプリケーションです。
インストール
Node 製で、npm
で簡単にインストールすることが可能です。(Node 環境は必須)
$ npm install chabot -g
Chabot アプリを作成
インストールが完了すると chabot
コマンドが使えるようになります。
$ chabot create APPNAME -d ~/ -f
アプリ名を指定した後、 -d
オプションでアプリを作るディレクトリのパスを指定します。
すでにその位置にディレクトリが存在する場合は、 -f
オプションを付けて下さい。
heroku にデプロイしてみる
Chabot はサーバーとして公開して運用する必要があります。これはとても面倒なことですが、最近は便利な Paas というサービスが有ります。中でも heroku が有名です。Node も動くので、今回は heroku を使った例を紹介します。
色々参考になるブログなどがたくさんあるので、heroku への登録などの説明は割愛します。
アプリを作成
新規でアプリを作成します。例では my-first-chabot
としました。
次にローカルに clone
します。
$ git clone [email protected]:my-first-chabot.git -o heroku
リポジトリを clone
したら、そこに chabot create
で Chabot アプリを作成します。
$ chabot create my-first-chabot -d ~/ -f
copying files.
completed!
設定ファイルに Token をセット
次に、エディタで config.json
を編集します。token
にご自身の API Token を指定してください。
route
は WebHook 設定の際に指定する URL になる部分です。
今回の場合は heroku なのでこんなかんじになります。
Procfile の作成
次に heroku でプロセスを動かすための設定ファイルである Procfile
を作成します。
$ touch Procfile
$ vim Procfile
デプロイ
heroku へ git でデプロイします。
$ git add .
$ git commit -m 'first deploy'
$ git push heroku master
これで完了です。とても簡単ですね。
GitHub の WebHook 設定
コミット通知を受けたいリポジトリの setting を開いて下さい。
setting 内の WebHook URLs に、heroku にデプロイした chabot アプリの URL を指定します。
:roomid
の部分には WebHook の通知を受けたいチャットのルーム ID を指定します。ルーム ID は ChatWork を開いているブラウザの URL のこの部分です。(#!rid より右側の数字)
URL をセットしたら Update settings
して、試しに Test Hook
してみてください。
うまく行けば指定したルームに、コミットの情報がそうされているはずです。
通知が来なかったりする場合は heroku 側(サーバー側)でエラーを吐いてる場合があります。ログを確認するコマンドは以下です。
$ heroku logs
まとめ
これで指定したリポジトリの監視ができるようになりました。あと少し補足ですが、実際の運用方法としては、開発関係者のみのメンバーでコミット通知用のグループチャットを作成して、そこに延々と通知させる感じがいいでしょう。また、リポジトリごとに部屋を分ければごちゃごちゃになりません。
今回は GitHub のコミット通知を受け取る例でしたが、工夫すれば他にもいろんなことが可能です。応用はまた次回ということで!