LoginSignup
14
8

More than 5 years have passed since last update.

GitHub Pull Requestのレビュー依頼をした時に自動的にSlack通知する

Posted at

GitHub Pull Requestを作ってレビュー依頼した時に自動的に対象のレビュアーにだけ即座にSlack通知するように設定したので、方法を共有します。

それまでのPull Request レビュー依頼

GitHubでPull Requestを作成した後、レビュアーへのレビュー依頼が二度手間になっていることはないでしょうか?
例えば僕のチームは今まで以下のような手順でレビュー依頼を行っていました。
1. Pull Request上でレビュアーに対してレビュー依頼をする
image.png

2. 同じPull Request上でレビュアーに対してメンション付きのコメントをする
image.png
(僕のチームはZapierという外部サービスを組み合わせて自動化する為のツールを導入しています。
ZapierによりGitHubとSlackを連携させて、↑の画像のようにGitHubでメンション付きのコメントをした時、メンションとマッピングしたSlackユーザーに自動的にslackbot経由で通知が飛ぶようになっています。)

image.png

この二つの作業「Pull Request上でレビュアーに対してレビュー依頼をする」「同じPull Request上でレビュアーに対してメンション付きのコメントをする」をPull Requestを作る度に開発者が毎回行っていたわけです。

「え、どっちかだけやれば良いんじゃ・・?」と思う方もいるかもしれません。
しかしチーム内でレビューは頻繁に行っているので、メンション付きのコメントだけしてSlackに通知が飛んでも見落としてしまい、自分がレビューすべきPRが分からなくなる時がたまにあります汗

そんな時レビュー依頼が設定されていれば、GitHubの「Review Requests」ページで自分がレビューしなければならないPull Requestが簡単に確認出来ます。
image.png

一方でレビュアーに自分が作ったPull Requestを気づいてもらう為にSlack通知も欠かすことは出来ず、こういった二度手間をせざるを得ませんでした。

ただちりも積もれば何とやらでこの作業が段々面倒くさくなってきました。。。(特に自分)
そこでPull Requestでレビュー依頼をした時に対象のレビュアーにだけSlack通知するよう自動化を行いました。

レビュー依頼した時に自動的にSlack通知するぞ

結論から言うとprprというbot frameworkを使うことにより簡単に実現出来ました。
prprの概要は以下の記事を読んでもらった方が早いと思います。
https://mzp.hatenablog.com/entry/2017/03/05/005205

prpr導入方法

prpr-templateでまずはHerokuにデプロイ

prpr-templateというHerokuに簡単にデプロイする為のテンプレートがあるのでこれを使います。
まずはREADMEに記載している通り設定してみてください。
※別のprpr-templateもありますが、こちらはレビュー依頼時のSlack通知用のprprプラグインは含まれていないので注意してください。

MEMBERS.mdを編集

prpr-templateのリポジトリをforkした後、GitHubメンションとSlackメンションを紐づける為のMEMBERS.mdというファイルをルート直下に生成します。
* @{GitHubユーザー名}: @{Slack表示名}のフォーマットで一人ずつマッピングしていきます。
例えば僕の場合こうなります。

MEMBERS.md
* @endam: @damasa
* @*****: @******

生成後はgit push heroku masterを叩いてHerokuにデプロイします。

Slackのどこに通知するか設定する

Herokuアプリケーションの設定ページ(https://dashboard.heroku.com/apps/{アプリ名}/settings)を開き、Config Varsを編集します。
image.png

prpr-mention_reviewersプラグインのREADMEを見ると分かるように、Slackのどこに通知するかはMENTION_COMMENT_ROOMMENTION_REVIEWERS_TO_DMの二つの設定があります。

MENTION_COMMENT_ROOM - room name to post mention.
MENTION_COMMENT_MEMEBRS - a file name to map github username to chat service one. (Default: MEMBERS.md)
MENTION_REVIEWERS_BODY - notification message body. (Default: 'Please review my PR: %{title}')
MENTION_REVIEWERS_TO_DM - notify Direct Message instead of MENTION_COMMENT_ROOM. (Default: false)

もしslackbot経由でレビュアー本人にだけ通知したい場合は、上記の添付画像のようにMENTION_REVIEWERS_TO_DMにtrueを設定します。
特定のチャンネルに通知したい場合はMENTION_COMMENT_ROOMにチャンネル名を設定してください。

さあ、これで準備は整いました!!・・・とその前に確認すべきことが一点💦

注意!GitHubユーザー名とSlackユーザー名を同じにしておく

ここで言うSlackユーザー名はSlack表示名とは全くの別物ですのでくれぐれも注意してください。
Slackユーザー名がGitHubユーザー名と同じか確認するために自分のSlackチームの以下のURLにアクセスします。
https://{チーム名}.slack.com/account/settings?updated_username=1#username

そうすると↓のようにUsernameの編集状態になります。
もしここで表示されているUsernameがGitHubユーザー名と違うのであれば更新する必要があります。
image.png

結果

実際にチームで運用してみた結果、、即座にレビュー依頼のSlack通知がキタ!! 素晴らしい!!
image.png

こういったルーチンワークだからこそ自動化することの重要さを改めて実感。
自動化って最高だぜ!

あ、prprは他にもいくつか便利そうなプラグインがあるので、気になる方はお試しください。
https://github.com/mzp/prpr#handler

14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8