Code Owners を設定して GitHub プルリクストのレビュアーを自動アサイン

目次

はじめに

GitHub で CODEOWNERS を作成し、プルリクエストのレビュアーアサイン自動化や責務の明確化などを行うことができます。

背景

モノレポのリポジトリ運用が始まった際にプルリクエストの運用で下記の課題を感じていました。
  • ディレクトリごとにメインの担当者が異なり、レビュアーに抜けが発生する
  • スキーマの変更のルリクエストを確認してほしいレビュアーがとても多く、プルリクエスト作成時に毎回手動指定するのが大きな手間
最初は Working Agreement (チーム内のルール) でカバーしていたのですが、GitHub の機能である Code Owners で仕組み化することにしました。

Code Owners とは

CODEOWNERS ファイルを使い、リポジトリ中のコードに対して責任を負う個人あるいは Team を指定できます。
コードオーナーについて - GitHub Docs
https://docs.github.com/ja/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
この機能を使うことで、ファイル / ディレクトリ ごとにコードの責任者を指定することができます。

CODEOWNERS ファイルの作成方法

.github/CODEOWNERS を作成し、.gitignore と同じ構文で設定することができます。意外と知られていないのですがメールアドレスでも OK です。チームも設定することができます。
/project-a/ @bicstone
/project-b/ t.oishi@example.com
/project-c/ @octo-org/octocats
.graphqls @bicstone t.oishi@example.com @octo-org/octocats
ちなみに CODEOWNERS 自体を GitHub で開くと構文チェックの結果が表示されるので、リポジトリに対するユーザーの権限が無くなった場合などに検知することができます。

効果

レビュアーが自動でアサインされる

該当のファイルに対する PR を作成すると、レビュアーが自動でアサインされます。チームにおいてはシャッフラーなどの機能も使用されます。
また、Branch protection rule に "Require review from Code Owners" というルールがあり、これを設定するとマージには Code Owners の承認を必須にすることもできます。
Managing a branch protection rule - GitHub Docs
https://docs.github.com/ja/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule#creating-a-branch-protection-rule

コードに Code Owners が表示される

GitHub 上でファイルを開くと、該当の Code Owners が表示されます。開発した人 (Contributors) だけでなく、PR を開かずも承認したチーム (Code Owners) もわかるのは大きく、後々役立つことが多いです。

まとめ

GitHub の Code Owners 機能を活用することで、モノレポ環境においての開発体験 (Developer Experience) の向上を実現することができました。

シェア

Twitter
Facebook
はてブ
LinkedIn
LINE
Pocket