Hipchat(Slack)上でHubotを使い、開発中のレポジトリでOpenしているPull Requestの一覧を取得する。
準備
- HubotをHipchatで動かす(インストール手順は省略)
- GitHubのPersonal access tokenを取得(https://github.com/settings/applications から取得可能)
手順
hubot-scripts
GitHub社が公式でHubotスクリプト集を公開している。
その中の、hubot-scripts/github-pulls.coffee を利用する。
Hubotインストール時に上記スクリプト群は同梱されている(/path/to/hubot/node_modules/hubot-scripts/src/scripts/
以下)ので、利用する際はhubot-scripts.json
に利用するスクリプトの名前を追記していけば良い。
[..., "github-pulls.coffee"]
githubot
github-pulls.coffee
は、githubotという外部モジュールに依存している。
iangreenleaf/githubot
このgithubotは、GitHub APIを簡単に扱えるNode.js用ラッパーで、HUBOT_GITHUB_TOKEN
という環境変数にGitHubのアクセストークンを設定すれば利用可能。
例えば、
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には、他にも色々なスクリプトが置いてあるので触ってみると面白そう。