GitHub で CODEOWNERS ファイルを使うとコードに対するオーナーシップを設定することができて,プルリクエストを作ると自動的にレビュアーにアサインされるという仕組みを実現できる👌ドラフト状態のプルリクエストだとレビュアーはアサインされないようにもなっていてイイ感じ \( 'ω')/
"Looks Good to Me"
localstack/CODEOWNERS や terraform/CODEOWNERS もあって,GitHub の CODEOWNERS ファイルという機能は前から知っていたけど,書籍 "Looks Good to Me" を読んでいるときに Chapter.5「The advantages of automation」で「レビュアーのアサインを自動化する」というトピックが紹介されていて,仕事でも使えそうだな〜と感じた💡
モノレポに CODEOWNERS ファイルを導入する
検証としてモノレポに CODEOWNERS ファイルを導入してみる.まず以下のような構成 (Yarn Workspaces) を作っておく.
$ tree -L 2 . . ├── CODEOWNERS ├── README.md └── packages ├── app1 ├── app2 └── app3
そして CODEOWNERS ファイルを準備する.あくまでサンプルとして /packages/app1 と /packages/app2 にはコードオーナー(リードエンジニアなど)を設定して,/packages/app3 には GitHub Organization Team を設定しておく📝 またドキュメントには CODEOWNERS ファイル自体にもコードオーナーを設定しておくと良いと書いてあって,設定してある.
/CODEOWNERS @kakakakakku /packages/app1 @kakakakakku /packages/app2 @kakakakakku-sandbox /packages/app3 @kakakakakku-corp/app3-developers
GitHub Organization Team を使えばレビュアーにアサインするアルゴリズムを設定できて,バランス良くコードレビューを分担できる👌さらに GitHub アカウントで Busy ステータスを設定してくとレビュアーの候補から除外されたりもして,ある程度の規模の開発組織だったら GitHub Organization Team を積極的に使うと良さそう.
app2 の変更を含んだプルリクエストを作る

app3 の変更を含んだプルリクエストを作る

app1,2,3 の変更を含んだプルリクエストを作る

イイ感じ \( 'ω')/
