概要
GitHubのCODEOWNERSは、特定のファイルやディレクトリに変更が加わった場合に、指定のメンバーに自動でレビューリクエストが送られる便利な仕組みです。
しかし、dependabotやrenovateなどの依存関係アップデートの仕組みを導入している場合、Botユーザーが出したPRは必ずしもレビューが必要でない場合もあります。自動マージの設定を有効にしているリポジトリだと、レビューリクエストがノイズになることも多々あります。
そこで、以下のようにCODEOWNERSを設定します。
npmの場合
* @some-team
package.json
package-lock.json
goの場合
* @some-team
go.mod
go.sum
php composerの場合
* @some-team
composer.json
composer.lock
CODEOWNERSは最後にマッチしたルールが適用される仕様です。つまり、例えばBotユーザーが出したPRの差分がpackage.jsonとpackage-lock.jsonのみしかない場合は、それぞれCODEOWNERSが空で上書きされるため、結果的にレビュワーのアサインが空になるという仕組みです。
このテクニックは、以下のStackOverflowの記事から引用したのですが、あまり知られていなさそうだったので、記事として残しておきました。
https://stackoverflow.com/questions/75531641/exclude-codeowners-from-dependabot-pr
なお、注意点として、この方法では通常の人間によるPRでも同じルールが適用されてしまいますが、依存関係アップデートの仕組みを導入しているリポジトリで、依存関係のみアップデートするPRを出す機会はそう多くないでしょうし、問題になるケースは稀かと思われます。