Renovateの設定を共通管理する方法とメリット
フィッツプラスシステム開発部の高山です。
複数のリポジトリでRenovateを運用していると、設定の管理が大変になってきますよね。今回は、その悩みを解決するShareable Config Presetsの活用方法について紹介します。
Shareable Config Presetsとは
Renovateには設定を共通化できる機能があります。
仕組みはシンプルで、共通設定用のリポジトリを用意してそこに設定を書き、他のリポジトリからはその設定を参照するだけです。
うちでは renovate-settings というリポジトリを共通設定用に用意しています。このリポジトリには default.json というファイルを置きます。default.json がデフォルトで読み込まれるファイル名なのです。
default.json の中身は、各リポジトリの renovate.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"
}
]
}
参照する側のリポジトリでは、こんな感じで指定します。
{
"extends": [
"github>armg/renovate-settings"
]
}
今回はGitHubの例を書きましたが、GitLabなど他のプラットフォームでも同じように使えます。ファイル名を変更したい場合など、詳細は上記のドキュメントを参照してください。
共通管理することで得られるメリット
主なメリットは以下の通りです。
- チーム全体で設定を統一できる
- 設定変更が一箇所で完結する
- 新規リポジトリへの適用が簡単
特に設定変更が一箇所で済むのは大きいです。複数リポジトリに同じ変更を適用する手間がなくなります。
フィッツプラスでの活用事例
グループ化設定との組み合わせ
以前の記事で紹介したグループ化設定も、Shareable Config Presetsで管理しています。
例えば renovate-settings リポジトリに以下のような設定を置いています。
{
"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を運用している方は、ぜひ試してみてください。
Discussion