Edited at

Hubotにお願いしてPull Requestの一覧を表示

More than 3 years have passed since last update.

Hipchat(Slack)上でHubotを使い、開発中のレポジトリでOpenしているPull Requestの一覧を取得する。


準備


手順


hubot-scripts

GitHub社が公式でHubotスクリプト集を公開している。

その中の、hubot-scripts/github-pulls.coffee を利用する。

Hubotインストール時に上記スクリプト群は同梱されている(/path/to/hubot/node_modules/hubot-scripts/src/scripts/以下)ので、利用する際はhubot-scripts.jsonに利用するスクリプトの名前を追記していけば良い。


/path/to/hubot/hubot-scripts.json

[..., "github-pulls.coffee"]



githubot

github-pulls.coffeeは、githubotという外部モジュールに依存している。

iangreenleaf/githubot

このgithubotは、GitHub APIを簡単に扱えるNode.js用ラッパーで、HUBOT_GITHUB_TOKENという環境変数にGitHubのアクセストークンを設定すれば利用可能。

例えば、


example.coffee

github = require('githubot')

github.get 'https://api.github.com/user/repos', { type: 'private' }, (repos) ->
console.log repos[0].name

のように書けば、ユーザーが管理しているプライベートリポジトリの情報を取得することができる。詳しくはREADME参照。

ということで、利用するためにインストールしておく。

$ npm install githubot --save


レポジトリのPull Request一覧をチャット上で表示

ここまで来たら手順としてはほぼ完了している。github-pulls.coffeeを確認しつつ、追加で環境変数を設定すれば良い。とりあえず必要なのは、



  • HUBOT_GITHUB_TOKEN(先ほど述べたやつ)

  • HUBOT_GITHUB_USER

の2つ。HUBOT_GITHUB_USERにはGitHubでのユーザー名を入れる。

$ export HUBOT_GITHUB_TOKEN = <トークン>

$ export HUBOT_GITHUB_USER = <GitHubのユーザー名>

このあとHubotを再起動すれば完了。

Hubotにお願いするコマンドは、

$ hubot show [me] <レポジトリ名> pulls

実際にチャット上で実行すると、

> hubot show hogehoge pulls

> I found 5 open pull requests for <ユーザー名>/hogehoge
(略)

といった感じで、現在open中のPR一覧がURL付きで表示される。

ちなみに、github-pulls.coffeeの中身を覗いてみると、正規表現を使ったPRタイトルの検索もできるようだ。

例えば、

> hubot show hogehoge pulls with WIP

と実行すれば、タイトルに"WIP"が含まれるものだけが表示される。Work in progressのものだけ確認したいときに良いかもしれない。


終わり

こんな感じで、Hubotを利用して簡単にGitHub上の情報を表示したりできる。github/hubot-scriptsには、他にも色々なスクリプトが置いてあるので触ってみると面白そう。