2022/02/24
GitHub Pull Requestを効率化!チームの誰かを自動でレビュアーにアサインする方法
目次
はじめに
こんにちは。フロントエンドエンジニアのKimuraです。
アトラスではGitHubを用いた開発を行っており、Pull Reaquest上でレビューを行っています。必須となるレビュアーは各チーム内で決まっており、加えてサブレビュアーのうちいずれかのメンバーがレビューを行う場合もあります。
Pull Requestは日常的に繰り返し行われるため、そのたびに必要なレビュアーの設定を自動化することは、効率化の観点で有用だといえます。本記事では、決められたルールに沿ってチームメンバーをレビュアーに自動設定する方法を紹介します。
設定方法
チームの作成
まずは、レビュアーとなるメンバーを含むチームを作成します。
Organizations
のトップ画面からTeams
を開きNew team
を押下します。
続いてチーム情報を入力し、Create team
を押下します。親となるチームが存在する場合は、Parent team
を入力します。
Parent team
を指定した場合、Confirm changes
が表示されます。内容に問題がなければ、ボタンを押下して先に進みます。親となるチームのメンテナーの承認がないとネストされませんが、後続の設定作業への影響はありません。
チームメンバーの追加
チームの作成者は、Maintainer
として既にチームへと追加されています。
チームのトップ画面でMembers
タブを開き、Add a member
を押下します。
メンバーを検索してInvite
を押下することで、チームに追加できます。
レビュアーの自動割り当て設定
続いて、チームにレビュアーの自動割り当て設定を行います(参考)。
対象チームのSettings
画面上でCode review
を押下すると、チームがレビュアーとなった場合の挙動を設定することができます。Save changes
を押下して確定します。
今回は最大2名をラウンドロビン方式で割り当てるよう設定しています。
割り当て方法は、Routing algorithm
で選択できます。Round robin
はメンバー間で交互にレビュアーを割り振り、Load balance
は直近30日間のレビュー数が均等となるようにレビュアーが選択されます。
また、チーム内にレビュアーとして割り当てたくないメンバーがいる場合、Never assign certain team members
の項目にチェックをしてから、個別に指定することも可能です。なお、Pull Reaquestの作成者やコミットしたメンバーについては自動で割り当ての対象外となります。
リポジトリへの権限確認
チームの設定が完了したので、次はリポジトリ側の設定に移ります。
リポジトリの権限を設定するため、リポジトリのSettings
画面を開きます。Collaborators and teams
を押下すると、ユーザやチームの権限一覧が表示されます。
チームにWrite
以上の権限を設定します。権限が満たされていない場合は、レビュアー自動設定の対象となりません。すでに親チームにWrite
以上の権限が設定されている場合は、対応不要です。
必須レビュアー設定
最後に、リポジトリの必須レビュアーを設定するため、.github/CODEOWNERS
をコミットします(参考)。
1 |
* @{オーガニゼーション名}/{チーム名} |
複数のチームやメンバーを指定したい場合は、半角スペースで繋ぎます。なお、この設定はマージされる側のブランチに反映されていないと有効になりません。
挙動確認
実際に自動設定されるか確認するため、レビュアーを指定せずPull Requestを作成します。
上記の通り、2名のレビュアーが自動設定されました。割り当てはPull Request作成後に実行されるようなので、即時反映されない場合は実行完了を待つ必要があります。
終わりに
いかがでしたでしょうか。時間の短縮だけではなく、ヒューマンエラーの防止という観点でも、繰り返し発生する作業の自動化は有益かと思います。今回の記事が一助となれば幸いです。