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

はじめに

【全部俺】 Web フロントエンドエンジニアのメモ Advent Calendar 2022 14日目の記事です。
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で開くと構文チェックの結果が表示されるので、リポジトリに対するユーザーの権限が無くなった場合などに検知できます。
CODEOWNERS を GitHub で開いたスクリーンショット。 "This CODEOWNERS file is valid." と表示されている。

効果

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

該当のファイルに対するPRを作成すると、レビュアーが自動でアサインされます。チームにおいてはシャッフラーなどの機能も使用されます。
GitHub のプルリクエストのスクリーンショット。 Reviewers に bicstone が Code owner として自動で追加されている。
また、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 が表示されている。

まとめ

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

ホームプロフィール外部リンクのため、別ウインドウで開きますプライバシーポリシー

時間のないサイト運営者リング外部リンクのため、別ウインドウで開きます

© 2024 Oishi Takanori / Made with Gatsby.js