メインコンテンツへスキップ
804文字
4分
編集

RenovateとDependabotのレビュワーを一元管理する

#背景

Renovateでは、Dependabot Alerts を参照してセキュリティ PR を作成する機能がデフォルトで有効化されている。

しかし、これはDepedabot自体の「Dependabot Security Updates」とは挙動が微妙に異なる。例えば脆弱性の深刻度を考慮せずにPRを作成していたり、Renovateでは自動的に作られないパターンなどが見られた。仕様か、もしくはRenovateの設定と競合を起こして不安定な挙動をしている可能性がある。

そこで、RenovateとDependabot Security Updatesを併用したい需要が生まれた。しかし、両方を使うことでレビュワーなど指定が分散することは好ましくない。

#解決策:CODEOWNERS ファイルを活用する

CODEOWNERS ファイルを活用することで、Renovate と Dependabot のレビュワー設定を一元管理できる。

  • Dependabot: CODEOWNERS ファイルを自動的に参照する(設定不要)
  • Renovate: reviewersFromCodeOwners: true を設定することで、CODEOWNERS ファイルからレビュワーを取得する

これにより、CODEOWNERS ファイル 1 つで両方のレビュワーを統一できる。

NOTE

Dependabot の reviewers 設定オプションは2025年5月20日に廃止されているため、 CODEOWNERS ファイルを使用する以外の方法はない。

#CODEOWNERS ファイルの基本仕様

CODEOWNERS ファイルは、リポジトリの .github/、ルート、または docs/ ディレクトリに配置できる。複数の場所に存在する場合、GitHub は上記の順序で検索し、最初に見つかったファイルを使用する。

基本的なシンタックスは、パターンに続けて GitHub のユーザー名またはチーム名を指定する。

text
# すべてのファイルに対してグローバルオーナーを指定
*       @global-owner1 @global-owner2

# .js ファイルに対して特定のオーナーを指定
*.js    @js-owner

# チームを指定する場合
*.txt   @org/team-name

# ディレクトリを指定する場合
/docs/  @doctocat

チームを指定する場合は @org/team-name の形式を使用する。チームはリポジトリへの write 権限を持っている必要がある。

詳細は GitHub Docs - About code owners を参照。

#実装方法

#CODEOWNERS ファイルの作成

CODEOWNERS ファイルを作成し、レビュワーを指定する。

text
# すべてのファイルに対してチームを指定
*       @org/development-team

#Renovate の設定

renovate.jsonreviewersFromCodeOwners: true を追加する。

json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "reviewersFromCodeOwners": true,
  // Dependabot Alertsを読み取る機能の無効化
  "vulnerabilityAlerts": {
    "enabled": false
  }
}

これにより、Renovate は CODEOWNERS ファイルからレビュワーを自動的に取得する。

#併用における注意点

  • RenovateとDependabot(CODEOWNERS)でレビュワーの指定が異なる場合、両方が適用される
    • CODEOWNERSによるレビュワー指定は、GitHubの機能であるためRenovateのPRにも適用される
  • RenovateやGitHubの設定のよっては、Renovateによるautomergeが出来なくなる可能性がある
    • GitHubでレビュワー全員のapproveを必須にしている場合など
    • Renovateにbypass出来る権限を与えるなど現状回避する手段はある
    • しかし動作は保証されていないので注意

      Depending on the platform, having a CODEOWNERS file could block automerging, because it means a code owner must review the PR. - https://docs.renovatebot.com/key-concepts/automerge/#codeowners

#まとめ

CODEOWNERS ファイルとRenovateのreviewersFromCodeOwnersオプションを利用することで、RenovateとDependabot のレビュワー設定を一元管理できる。