GitHub Pull Requestを効率化!チームの誰かを自動でレビュアーにアサインする方法

はじめに

こんにちは。フロントエンドエンジニアのKimuraです。

アトラスではGitHubを用いた開発を行っており、Pull Reaquest上でレビューを行っています。必須となるレビュアーは各チーム内で決まっており、加えてサブレビュアーのうちいずれかのメンバーがレビューを行う場合もあります。

Pull Requestは日常的に繰り返し行われるため、そのたびに必要なレビュアーの設定を自動化することは、効率化の観点で有用だといえます。本記事では、決められたルールに沿ってチームメンバーをレビュアーに自動設定する方法を紹介します。

設定方法

チームの作成

まずは、レビュアーとなるメンバーを含むチームを作成します。

Organizationsのトップ画面からTeamsを開きNew teamを押下します。

Team画面のキャプチャ

続いてチーム情報を入力し、Create teamを押下します。親となるチームが存在する場合は、Parent teamを入力します。

Create new team画面のキャプチャ

Parent teamを指定した場合、Confirm changesが表示されます。内容に問題がなければ、ボタンを押下して先に進みます。親となるチームのメンテナーの承認がないとネストされませんが、後続の設定作業への影響はありません。

チームメンバーの追加

チームの作成者は、Maintainerとして既にチームへと追加されています。

チームのトップ画面でMembersタブを開き、Add a memberを押下します。

Members画面のキャプチャ

メンバーを検索してInviteを押下することで、チームに追加できます。

Add member画面のキャプチャ

レビュアーの自動割り当て設定

続いて、チームにレビュアーの自動割り当て設定を行います(参考)。

対象チームのSettings画面上でCode review を押下すると、チームがレビュアーとなった場合の挙動を設定することができます。Save changesを押下して確定します。

今回は最大2名をラウンドロビン方式で割り当てるよう設定しています。

Code review画面のキャプチャ

割り当て方法は、Routing algorithmで選択できます。Round robinはメンバー間で交互にレビュアーを割り振り、Load balanceは直近30日間のレビュー数が均等となるようにレビュアーが選択されます。

また、チーム内にレビュアーとして割り当てたくないメンバーがいる場合、Never assign certain team membersの項目にチェックをしてから、個別に指定することも可能です。なお、Pull Reaquestの作成者やコミットしたメンバーについては自動で割り当ての対象外となります。

リポジトリへの権限確認

チームの設定が完了したので、次はリポジトリ側の設定に移ります。

リポジトリの権限を設定するため、リポジトリのSettings画面を開きます。Collaborators and teamsを押下すると、ユーザやチームの権限一覧が表示されます。

チームにWrite以上の権限を設定します。権限が満たされていない場合は、レビュアー自動設定の対象となりません。すでに親チームにWrite以上の権限が設定されている場合は、対応不要です。

Manage access画面のキャプチャ

必須レビュアー設定

最後に、リポジトリの必須レビュアーを設定するため、.github/CODEOWNERSをコミットします(参考)。

複数のチームやメンバーを指定したい場合は、半角スペースで繋ぎます。なお、この設定はマージされる側のブランチに反映されていないと有効になりません。

挙動確認

実際に自動設定されるか確認するため、レビュアーを指定せずPull Requestを作成します。

Pull Pequest画面のキャプチャ

上記の通り、2名のレビュアーが自動設定されました。割り当てはPull Request作成後に実行されるようなので、即時反映されない場合は実行完了を待つ必要があります。

終わりに

いかがでしたでしょうか。時間の短縮だけではなく、ヒューマンエラーの防止という観点でも、繰り返し発生する作業の自動化は有益かと思います。今回の記事が一助となれば幸いです。