読者です 読者をやめる 読者になる 読者になる

pblog

pplog.net を作っている @ppworks こと越川直人(Koshikawa Naoto)のブログ

githubやesaのmentionをslackでmentionするよ

heroku github esa slack

f:id:naoto5959:20160319010013p:plain

githubesaでmentionがあったら、slackbotにこんな感じのmentionを飛ばさせたいんですよ。

f:id:naoto5959:20160319004631p:plain

やむを得ない理由だったり、ナンカついウッカリだったりで

  • githubとslackのidが違う
  • esaとslackのidが違う

なんてことが、あったりなかったりするわけですが、そんな時でも

-
  github: ppworks
  esa: koshikawa_naoto
  slack: koshikawa.naoto

みたいなidのmappingがあれば

  • githubのmentionをslackで通知
  • esaのmentionをslackで通知

することが出来るんじゃないかなーと思って作ってみました。heroku buttonでササッと構築したかったのでなるべくDBを使わずに設定ができるようにしています。

準備

github.com

へアクセスして、heroku buttonをクリックします。herokuではないどこかにホスティングしたい場合は、怪しげな英語のナニカで書かれたREADMEにそれっぽいことが書いてあります。

heroku buttonで入力を促される以下の環境変数にいろいろ設定していきます。

  • MENTIONS_MAPPINGS_FIlE_PATH
  • SLACK_WEBHOOK_URL
  • GITHUB_TO_SLACK_TOKEN
  • ESA_TO_SLACK_TOKEN

MENTIONS_MAPPINGS_FIlE_PATH

以下の様な感じの、githubesaとslackのmappingをしたyamlファイルを置いたgist(ちゃんとrawにしてね)などのURLを記載します。

-
  github: ppworks
  esa: koshikawa_naoto
  slack: koshikawa.naoto

たとえば、こんな。

https://gist.githubusercontent.com/ppworks/49f6ce44efb09d5fc8e9/raw

SLACK_WEBHOOK_URL

通知したいslackのIncoming WebHooksを作って、埋めます。

たとえば、こんな。

https://hooks.slack.com/services/xxxxxx/yyyyyy/zzzzzz

GITHUB_TO_SLACK_TOKEN

githubのmentionをslackに通知したい場合埋めて下さい。

ruby -r 'securerandom' -e 'puts SecureRandom.hex'

の結果などを入れるとよいです。

githubに設定すべきwebhookは以下のようになります。

https://your-heroku-application-name.herokuapp.com/webhooks/**ここが今作ったtoken**

githubでは以下の様なEventにhookするようにwebhookを設定して下さい。

githubのwebhook設定

  • githubのissue, pull requestでmentionされたとき
  • githubのissue, pull requestでassignされたとき

mappingが存在すれば、slackにslackbotの個別チャットでmentionが飛びます。

f:id:naoto5959:20160319004539p:plain

ESA_TO_SLACK_TOKEN

esaのmentionをslackに通知したい場合埋めて下さい。

ruby -r 'securerandom' -e 'puts SecureRandom.hex'

の結果などを入れるとよいです。

githubに設定すべきwebhookは以下のようになります。

https://your-heroku-application-name.herokuapp.com/webhooks/**ここが今作ったtoken**

esaでは以下の様なEventにhookするようにwebhookを設定して下さい。

esaのwebhook設定

  • esaのpost, commentでmentionされたとき

mappingが存在すれば、slackにslackbotの個別チャットでmentionが飛びます。

f:id:naoto5959:20160319004631p:plain

@allのときは、#general@everyone宛のmentionが飛びます。

感想

ウッカリ勢いで意味もなくRails5で作ってしまったけども、今のところそれなりに便利に運用出来ているのでよしとする。

割と便利です。

要望とかはPR頂ければ喜びますので、何卒(\( ⁰⊖⁰)/)