GitHub PRをSlackに自動通知&2人レビュー必須にする設定方法

未分類

開発チームが大きくなってくると、「PRが上がったことに気づかなかった」「レビューなしでマージされてしまった」といった問題が起きがちです。

今回は、GitHubのPRをSlackに自動通知する方法と、マージ前に必ず2人のレビュー承認を必須にする設定を紹介します。どちらも10分程度で設定できるので、ぜひ試してみてください。

やりたいこと

今回設定するのは以下の2つです。

  • GitHubの特定リポジトリでPRが作成されたら、Slackの特定チャンネルに通知する
  • PRは2人以上のレビュー承認がないとマージできないようにする

この2つを組み合わせることで、PRの見落としを防ぎつつ、コードの品質も担保できる仕組みが作れます。

1. GitHub公式SlackアプリでPR通知を設定する

事前準備:SlackにGitHubアプリをインストール

まずはSlackのワークスペースにGitHub公式アプリをインストールします。Slackの「App」から「GitHub」を検索してインストールしてください。

SlackのAppディレクトリでGitHubを検索している画面

インストール時にGitHub側でアプリの権限設定が求められます。Organization配下のリポジトリを連携する場合は、Organization Ownerの権限が必要になるので注意してください。

GitHubでSlackアプリのRepository access設定画面

もし「You do not have permission to modify this app」というエラーが表示された場合は、Organization Ownerに設定を依頼してください。

Slackチャンネルでリポジトリを購読する

GitHubアプリの準備ができたら、通知を受け取りたいSlackチャンネルで以下のコマンドを実行します。

/github subscribe オーナー名/リポジトリ名

Slackでsubscribeコマンドを実行した結果

これで、issues、pulls、commits、releases、deploymentsの通知がこのチャンネルに届くようになります。

PR通知だけに絞る

デフォルトだと色々な通知が来て少しうるさいので、PR関連だけに絞りましょう。以下のコマンドで不要な通知をオフにします。

/github unsubscribe オーナー名/リポジトリ名 issues commits releases deployments

unsubscribe実行後pullsだけになった画面

これでPRの作成・更新・マージ・クローズの通知だけが届くようになりました。

設定内容を確認したい場合は、以下のコマンドで確認できます。

/github subscribe list

2. PRに2人のレビュー承認を必須にする

次に、GitHub側でブランチ保護ルールを設定して、2人のレビュー承認がないとマージできないようにします。

Branch Rulesetの設定画面を開く

GitHubのリポジトリページから、以下の順番で設定画面を開きます。

Settings → Rules → Rulesets → New ruleset → New branch ruleset

GitHubのSettings画面でRulesを選択

基本設定

まずはRulesetの基本情報を設定します。

項目 設定値
Ruleset Name main-protection(任意の名前でOK)
Enforcement status Active

対象ブランチを指定する

「Target branches」セクションで、保護したいブランチを指定します。

New branch rulesetを選択

「Add target」をクリックして、「Include default branch」を選択すれば、mainブランチが対象になります。

2人承認必須のルールを設定する

「Rules」セクションで、「Require a pull request before merging」にチェックを入れます。

チェックを入れると詳細オプションが展開されるので、以下のように設定してください。

Require a pull request before mergingの詳細設定画面

項目 推奨設定 説明
Required approvals 2 承認必要人数。今回の要件はこれ。
Dismiss stale pull request approvals when new commits are pushed ON 承認後に新しいコミットがpushされたら、承認をリセットする
Require approval of the most recent reviewable push ON 最後にpushした人以外の承認を必須にする(自作自演防止)
Require conversation resolution before merging ON レビューコメントがすべて解決されるまでマージ不可

特に「Dismiss stale pull request approvals」は重要です。これがOFFだと、承認をもらった後にこっそりコードを変更してマージできてしまいます。

その他の推奨設定

ついでに、以下のルールもONにしておくと安心です。

項目 推奨設定 説明
Restrict deletions ON mainブランチの削除を防止
Block force pushes ON 強制プッシュを禁止(履歴改変を防止)

保存して完了

設定が終わったら、画面下部の「Create」ボタンをクリックして保存します。

動作確認

設定が完了したら、テスト用にPRを作成してみましょう。

  1. 新しいブランチを作成して、適当にファイルを追加
  2. mainブランチに向けてPRを作成
  3. Slackに通知が届くことを確認
  4. 1人目がApprove → まだマージボタンが押せないことを確認
  5. 2人目がApprove → マージボタンが有効になることを確認

Slackに届いたPR通知

承認が足りずマージできないPR画面

まとめ

今回は、GitHub PRのSlack通知と2人レビュー必須の設定方法を紹介しました。

どちらも一度設定してしまえば、あとは自動で機能してくれます。チーム開発では「仕組みで解決する」のが大事なので、まだ設定していないリポジトリがあればぜひ導入してみてください。

お問い合わせ

    未分類
    takahashiをフォローする
    KIYONO Engineer Blog

    コメント

    PAGE TOP
    タイトルとURLをコピーしました