GitHubとSlackとの連携に便利なHubotプラグインを2つ紹介します
Goodpatch Advent Calendar 2015の11日目の記事です。
昨日は@HirokiTerashimaのiOSのUITestについてでした!
私はBot作りが好きで、休日の暇な時間によく作ってます。好きすぎて、弊社のエンジニアイベントでもBotについて話したぐらいです。
そんな私が以下のことをBotを使ってできるようにしたので、今日はその紹介をしたいと思います。
- Slackからmasterへのプルリクを作成する
- GithubでメンションされたらSlackでもメンション付きで通知する
どちらもHubotのプラグインででき、コードをほぼ書かないで済むのでプログラミングに不慣れでも簡単に導入できます!
Hubotとは?
知らない方もいるかもなんで一応簡単にHubotについて説明しておきます。
HubotはNode.js製のBot実行フレームワークです。以下のように、かなり簡単にBotを作ることができます。
module.exports = (robot) -> ### 「hubot おはよう」 と投稿されると「Hello」とこたえる ### robot.respond /おはよう!/i, (res) -> res.send "Hello!" ### 「おはよう」 と投稿されると「Hello」とこたえる ### robot.hear /おはよう/i, (res) -> res.send "Hello!"
インストール方法とか作り方はコチラの記事が丁寧に書かれてます。
Githubと連携に便利なHubotプラグイン
本題のGitHubとの連携に便利なプラグインを2つ紹介したいと思います。
Hubotは自分で実装する方法の他に、プラグイン追加することで簡単に機能を追加できます。プラグインの適用方法も簡単で、プラグインを npm install
し、external-scripts.json
に追記するだけです。
Slackからmasterへのプルリクを作成する
hubotでデプロイ用のpull requestを作るプラグイン、hubot-deploy-builderを作成しました - Qiita
毎回masterへのプルリクのDescriptionを自分で書くのがめんどくさい問題があったので導入したHubotプラグインです。
このプラグインを使うと、developからmasterのプルリクをつくり、developにマージされたプルリクのサマリをそのプルリクのDescriptionに追記してくれます。
これで自分でDescriptionを書く必要がなくなることはもちろん、常に同じフォーマットのDescriptionになるので人によってDescriptionsの書き方のばらつきがでなくなるというメリットもあります。
(余談ですが、弊社ではほぼ同じことをしてくれるHubotのスクリプトを私が自前で実装してます。単に、このプラグインがあるのを知ったのが実装が終わった後だったという理由でです^^;)
GitHub上でメンションされたらSlackでもメンションする
yujiosaka/hubot-github-comment-notifier
GitHub上でメンションされても中々気づかないという問題がありました。なので、GitHub上でメンションしつつ、Slackでも手動メッセージを投稿してコードレビューをお願いするというめんどくさい運用をずっとやっていました。そこで導入したのがこのHubotプラグインです。
このHubotプラグインはGitHubのプルリクやissueでメンションしたり、CloseしたときにSlackに メンション付き でお知らせしてくれます。これでレビューの依頼などすぐ気付けるようになりました。
もしBot導入するのことができないorめんどくさいって方は以下を試してみるのもいいかもしれません。
- Chrome拡張「GitHub Notifier」
- Macアプリ「github-notifier」
- ZapierでGitHub → Slackのレシピを作る(ただし最大15分のタイムラグがあります)
最後に
Hubotを動作させる環境としてHerokuが便利です。フリープランだと6時間スリープさせないといけないという制約がありますが、Herokuのアドオンである「Process Scheduler」を使うと指定の時間帯にスリープさせることができます。Botは基本深夜動かさなくてもいいので、上記を使って例えば1〜7時スリープさせれば無料で運用ができます。
明日はAndroidエンジニアになりたての弊社エンジニアが色々書いてくれると思いますのでお楽しみに!