🔩

Renovateの設定を共通管理する方法とメリット

フィッツプラスシステム開発部の高山です。

複数のリポジトリでRenovateを運用していると、設定の管理が大変になってきますよね。今回は、その悩みを解決するShareable Config Presetsの活用方法について紹介します。

Shareable Config Presetsとは

Renovateには設定を共通化できる機能があります。

https://docs.renovatebot.com/config-presets/

仕組みはシンプルで、共通設定用のリポジトリを用意してそこに設定を書き、他のリポジトリからはその設定を参照するだけです。

うちでは renovate-settings というリポジトリを共通設定用に用意しています。このリポジトリには default.json というファイルを置きます。default.json がデフォルトで読み込まれるファイル名なのです。

default.json の中身は、各リポジトリの renovate.json に書くような普通の設定です。

default.json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:base"],
  "timezone": "Asia/Tokyo",
  "schedule": ["before 10am on monday"],
  "packageRules": [
    {
      "matchPackagePatterns": ["^@types/"],
      "groupName": "type definitions"
    }
  ]
}

参照する側のリポジトリでは、こんな感じで指定します。

renovate.json
{
  "extends": [
    "github>armg/renovate-settings"
  ]
}

今回はGitHubの例を書きましたが、GitLabなど他のプラットフォームでも同じように使えます。ファイル名を変更したい場合など、詳細は上記のドキュメントを参照してください。

共通管理することで得られるメリット

主なメリットは以下の通りです。

  • チーム全体で設定を統一できる
  • 設定変更が一箇所で完結する
  • 新規リポジトリへの適用が簡単

特に設定変更が一箇所で済むのは大きいです。複数リポジトリに同じ変更を適用する手間がなくなります。

フィッツプラスでの活用事例

グループ化設定との組み合わせ

以前の記事で紹介したグループ化設定も、Shareable Config Presetsで管理しています。

https://zenn.dev/arm_techblog/articles/group-renovate

例えば renovate-settings リポジトリに以下のような設定を置いています。

default.json
{
  "packageRules": [
    {
      "description": "Datadog関連のライブラリは1つのPRにまとめる",
      "groupName": "Datadog packages",
      "matchManagers": ["bundler"],
      "matchPackageNames": [
        "datadog",
        "datadog-ci"
      ]
    }
  ]
}

これで全リポジトリに同じグループ化ルールが適用されます。

prBodyNotesでの注意事項自動挿入

PRの本文に注意事項を自動挿入する機能も活用しています。例えば、特定のパッケージ更新時に確認してほしいことがある場合、こんな設定を入れています。

{
  "prBodyNotes": [
    "{{#if (containsString packageName '@nuxt/')}}\n> [!Warning]\n> このPRには`@nuxt/*`パッケージの更新が含まれています。\n> lintやtest系のパッケージの場合でも、本番機能に影響が出ることがあります……\n{{/if}}"
  ]
}

以下のようにフォーマットして表示されのでわかりやすいです。

これにより、レビュアーが見落としがちなポイントをPR本文で自動的に伝えられます。共通設定にすることで、全リポジトリで同じ注意喚起ができるのが便利です。

まとめ

Shareable Config Presetsを使うことで、複数リポジトリのRenovate設定を効率的に管理できるようになりました。

設定の統一性が保たれるだけでなく、グループ化やPR本文への注意事項挿入といった便利な機能も、一度設定すれば全リポジトリに適用できます。

複数リポジトリでRenovateを運用している方は、ぜひ試してみてください。

ARMテックブログ

Discussion