deepblue-will’s diary

JS、CSS,Ruby、Railsなど仕事や趣味で試した技術系のことを書いていきます。

GitHubとSlackとの連携に便利なHubotプラグインを2つ紹介します

f:id:deepblue_will:20151209225432p:plain Goodpatch Advent Calendar 2015の11日目の記事です。
昨日は@HirokiTerashimaiOSの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へのプルリクを作成する

f:id:deepblue_will:20151205190120j:plain hubotでデプロイ用のpull requestを作るプラグイン、hubot-deploy-builderを作成しました - Qiita

毎回masterへのプルリクのDescriptionを自分で書くのがめんどくさい問題があったので導入したHubotプラグインです。

このプラグインを使うと、developからmasterのプルリクをつくり、developにマージされたプルリクのサマリをそのプルリクのDescriptionに追記してくれます。

f:id:deepblue_will:20151209225915j:plain

これで自分でDescriptionを書く必要がなくなることはもちろん、常に同じフォーマットのDescriptionになるので人によってDescriptionsの書き方のばらつきがでなくなるというメリットもあります。

(余談ですが、弊社ではほぼ同じことをしてくれるHubotのスクリプトを私が自前で実装してます。単に、このプラグインがあるのを知ったのが実装が終わった後だったという理由でです^^;)

GitHub上でメンションされたらSlackでもメンションする

f:id:deepblue_will:20151205190105j:plain yujiosaka/hubot-github-comment-notifier

GitHub上でメンションされても中々気づかないという問題がありました。なので、GitHub上でメンションしつつ、Slackでも手動メッセージを投稿してコードレビューをお願いするというめんどくさい運用をずっとやっていました。そこで導入したのがこのHubotプラグインです。

このHubotプラグインGitHubのプルリクやissueでメンションしたり、CloseしたときにSlackに メンション付き でお知らせしてくれます。これでレビューの依頼などすぐ気付けるようになりました。

もしBot導入するのことができないorめんどくさいって方は以下を試してみるのもいいかもしれません。

Hubotを動作させる環境としてHerokuが便利です。フリープランだと6時間スリープさせないといけないという制約がありますが、Herokuのアドオンである「Process Scheduler」を使うと指定の時間帯にスリープさせることができます。Botは基本深夜動かさなくてもいいので、上記を使って例えば1〜7時スリープさせれば無料で運用ができます。


明日はAndroidエンジニアになりたての弊社エンジニアが色々書いてくれると思いますのでお楽しみに!