githubやesaでmentionがあったら、slackbotにこんな感じのmentionを飛ばさせたいんですよ。
やむを得ない理由だったり、ナンカついウッカリだったりで
- 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を使わずに設定ができるようにしています。
準備
へアクセスして、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
以下の様な感じの、githubとesaと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のissue, pull requestでmentionされたとき
- githubのissue, pull requestでassignされたとき
mappingが存在すれば、slackにslackbotの個別チャットでmentionが飛びます。
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のpost, commentでmentionされたとき
mappingが存在すれば、slackにslackbotの個別チャットでmentionが飛びます。
@all
のときは、#general
に@everyone
宛のmentionが飛びます。
感想
ウッカリ勢いで意味もなくRails5で作ってしまったけども、今のところそれなりに便利に運用出来ているのでよしとする。
割と便利です。
要望とかはPR頂ければ喜びますので、何卒(\( ⁰⊖⁰)/)