(2015年までの)odaillyjp blog

イベント参加記録とプログラミング系の雑記

Github issue のコメントを Lingr に通知させる

フィヨルドインターンLingr というチャットツールを使っているのですが、 Github の Issue や Pull request にコメントが付いたとき、Lingr に通知する仕組みが欲しい!」と思いました。Idobata でしたら Github API から直接に通知を受け取る機能があるのですが、残念ながら Lingr にはそのような機能がありません。Github API から Hubot を経由して Lingr に通知できるようにしようと思い、そのようなことができる Hubot プラグインを探しましたが、見つかりませんでしたので、自分で Hubot プラグインを作成して、Github から Lingr に通知するようにしてみました。

Hubot プラグインの紹介

今回、作成した Hubot プラグインはこちらになります。

HubotGithubCommentsNotifier
https://github.com/odaillyjp/hubot-github-comments-notifier

Github の Issue や Pull request にコメントを付けたとき、このような感じで通知してくれるようになります。

f:id:Shindo_Masaya:20140427043403j:plain:w600
通知メッセージは Idobata を参考にしてみました。

導入方法

私自身が Lingr + Hubot の組み合わせを使うのが初めてでしたので、簡単にですが導入方法を書いておきます。Hubot は Heroku 上で動かすのが楽だと思いますので、今回はその方法で進めていきます。

事前に用意しておくもの

  • Git
  • Github のアカウント
  • Lingr のアカウント
  • Hubot

Hubot をインストールしていない方は、『はじめてのHubot - Qiita 』を参考すると良いと思います。ちなみに、Lingr に通知するだけの用途であれば、redis は必要ないです。

  • Heroku のアカウント(Hubot を Heroku 上で動かす場合)

Hubot の準備

ローカルに Hubot の環境を構築します。(myhubot の部分がディレクトリ名になります。)

$ hubot --create myhubot

Hubot のルートディレクトリに移動して、git リポジトリを作成し、最初のコミットを行います。

$ cd myhubot
$ git init
$ git add .
$ git commit -m "First commit"

Lingr アダプタhubot-github-comments-notifier プラグインを入れたいので、package.json を下記のように修正します。

   "dependencies": {
      "hubot":         ">= 2.6.0 < 3.0.0",
      "hubot-scripts": ">= 2.5.0 < 3.0.0",
      "hubot-lingr":   ">= 0.1.1",
      "hubot-github-comments-notifier": ">= 0.0.8"
   },

さらに、external-scripts.json を下記のように修正します。

["hubot-github-comments-notifier"]

Lingr に通知するだけであれば、Redis は不要ですので、Redis の設定は消しておきましょう。
hubot-scripts.json を下記のように修正します。

["shipit.coffee"]

Lingr アダプタを使いたいので、Procfile を下記のように修正します。(MyHubot の部分が Hubot の名前になります。)

web: bin/hubot -a lingr -n MyHubot

プラグインをインストールします。

$ npm install

この時点でエラーが出なければ、設定に問題はありません。リポジトリを登録して、Heroku にデプロイします。

$ git commit -am "Add Lingr Adapter and Github comments notifier"
$ heroku create
$ git push heroku master

これで、Hubot の準備は完了です。次は LingrBot を登録します。

Bot の登録

Lingr にログインし、Bot 登録画面を開きます。この画面で Bot idCallback URL を入力して、Bot を登録します。(Callback URL には Hubot サーバの URL を入力します。)
f:id:Shindo_Masaya:20140427030915j:plain:w600
これで Bot が登録されました。

Lingr アダプタでは、環境変数から Bot id と Secret token を取得しますので、Heroku の環境変数Bot id と Secret token を登録します。(Bot id と Secret token は Developer Center に表示されています。)

$ heroku config:add HUBOT_LINGR_BOT=Bot id
$ heroku config:add HUBOT_LINGR_SECRET=Secret token

f:id:Shindo_Masaya:20140427045423j:plain:w600

あとは、通知を送りたい部屋に Bot を招待してあげれば、Lingr 側の設定は完了です。次は Github webhook を登録します。

Github webhook の登録

Lingr に通知を送りたいリポジトリGithub webhook 登録画面を開き、このように設定します。( <room> には通知を送る部屋 ID を入力します。)

Payload URL: <HUBOT_URL>:<PORT>/hubot/gh-comments?room=<room>
Payload version: +form
Event trigger: Send me everything.

f:id:Shindo_Masaya:20140427052704j:plain:w600

Github webhook の登録ができましたら、設定は完了です。

Congratulation

LingrGithub を使っているプロジェクトがあり、「Github issues のコメントを通知する仕組みが欲しい!」という方は、ぜひ使ってみてください。