最近、Chatworkを開発メンバーで使う機会が多く、せっかくなのでGitLabのプッシュ通知なども投稿されたら便利だなというわけで、調べてみたらchabotという素晴らしいものが公開されていたので使ってみた。
前提
- GitLab
- Chatwork
- Heroku
この3つ使う。Herokuはすでに登録済みの前提。
Herokuコマンドラインツールのインストール
HerokuはWebブラウザの管理画面から操作可能だが、ちょっと面倒なのでコマンドラインツールをインストールしておく。
ダウンロードしたら、普通にインストール。
$ heroku login
Enter your Heroku credentials.
Email:
Password:
これでHerokuにもログイン済みになる。
chabotのインストール
$ npm install chabot -g
超簡単。
chabotの設定
chabotコマンドが使えるようになっているので、chabot createでchabotプロジェクトファイルを生成する。今回は ~/Sites/chabot-sample/ ディレクトリに作った。
$ chabot create chabot-sample -d ~/Sites/ -f
$ cd ~/Sites/chabot-sample
$ git init
続いて、Herokuにアプリ登録をする。これでURLとgitのリポジトリが発行される。
$ heroku apps:create chabot-sample
$ git remote -v
heroku git@heroku.com:chabot-sample.git (fetch)
heroku git@heroku.com:chabot-sample.git (push)
chabotの設定ファイル config.json を修正する。
{
"port": 5000,
"bots": {
"github": {
"hostname": "chabot-sample.herokuapp.com",
"token": "【chatworkのAPITOKEN】",
"route": "/gitlab/hooks/:roomid"
}
}
}
hostnameには、heroku createで生成されたホスト名を指定。tokenはChatworkのAPIトークンを指定。なお、ChatworkのAPIは今プレビュー版らしく、申請しないと使えない。
なお、わりとすぐ発行されるけど、一度Chatworkからログアウトしないとメニューに出てこなかった…ので注意。
最後に、nodeを起動するためのProcfileを作成。
web: node app.js
chabotの起動
$ git add .
$ git commit -m 'first commit'
$ git push heroku master
これでHerokuにアプリケーションが転送され、無事chabotが起動する。起動の確認には heroku logs コマンドが便利。
$ heroku logs
GitLabのWebHooksに登録する
プッシュ通知したいGitLabのリポジトリ画面に行き、Settingsメニューを開くと左側に「Web Hooks」というメニューがある。
そこに先ほどHerokuで発行したホスト名 + config.jsonで指定した route のURL + 通知したいChatworkのルームIDを指定する。
今回の例だと http://chabot-sample.herokuapp.com/gitlab/hooks/0000000 こんな感じ。
なお、ChatworkのルームIDはURL末尾のridを除いた数字のみ。
これにて無事プッシュ通知がChatworkに自動投稿される。
おまけ:マージリクエストとかIssueも通知したい
今回のchabotではプッシュにしか対応していないが、マージリクエストやIssueの通知も行いたかったので、スクリプトをちょっと修正した。
/example/bots/gitlab_push.js
/example/templates/gitlab_push.js
この2ファイルをそのまま上書きすればOK。