tech.guitarrapc.cóm

Technical updates

GitHubのCODEOWNERでレビュアー指定を自動化する

GitHubでPRを作ったときにレビュアーを指定するのが面倒だったので、CODEOWNERでさくっと自動化しましょう。

CODEOWNERとは

GitHubは指定したパスに対してコード所有者を設定する機能があります。コード所有者に設定されたパスを変更するPRを作成されたとき、自動的にレビュアー指定されます。

これの便利なところは、機能やファイルごとにコード責任者を設定できるため、PRでレビュー必須にすれば確実にレビュープロセスを通せることです。また、コード変更する人もどの人にレビューしてもらうか意識せずとも指定されます。

CODEOWNERの設定

おすすめは、.github/CODEOWNERSに設定することです。中身はパス @オーナーのユーザー名で並べればOKです。極端な例ですが、全ファイルのオーナーを自分にするなら次のようになります。

* @myusername

もちろん、ファイルやディレクトリごとにオーナー設定もできます。

# 全.mdファイルのオーナー指定
*.md @myusername

# 認証関連のディレクトリのオーナー指定
/src/Server/Authentication/ @foo-username

# プレイヤーコントローラーのディレクトリのオーナー指定
/src/Foo.Unity/Assets/Foo/Scripts/PlayerController/ @bar-username

# あらゆるディレクトリにあるtests/のオーナー指定
**/tests/ @baz-username

もしディレクトリの特定サブディレクトリだけオーナー除外するなら、オーナーを空欄にします。

/src/Server/Authentication/ @foo-username
/src/Server/Authentication/GitHub/

Rulesetsでレビュアー必須と組み合わせる

もしコードオーナーのレビューを必須にするなら、ブランチルールセットでPRに関する設定をすればいいでしょう。例えば以下の組み合わせで、コードオーナーのレビューを必須にできます。

  • Require a pull request review before merging
  • Required approvals: 1以上
  • Require review from Code Owners

alt text

CODEOWNERには通知が来る

割と便利ですがちょっとノイジーなのが通知です。自分が所有者なコードにPRが作られるとCODEOWNERには通知が来ます。スマホのGitHub Appsにも通知が来るのでPRを見逃すことはない一方で、大量に来るとちょっとうるさいですね。

チームをアサインすると全員に通知が来る

チーム全員に通知くるのはさすがに? というのは、時々ある要望のようです。ディスカッションのようなカスタマイズしたワークフローが落としどころでしょう。

Copilotのコードレビューを自動化する

GitHub Copilot ReviewでPRをレビュー自動化する場合、CODEOWNERは用いずブランチルールセットで行います。便利。

  • Require a pull request review before merging
  • Request pull request review from Copilot

alt text

まとめ

GitHub Copilot Review便利なのですが、人間のレビューにはCODEOWNERがいいですね。カスタムアクションで頑張らずにすむなら省力化できます。

参考