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 -L2 . . ├── 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 の変更を含んだプルリクエストを作る
イイ感じ \( 'ω')/