Renovateとは
時間の経過とともに古くなっていくライブラリの更新を自動化してくれるツール
具体的には以下のようなことをしてくれます。
- リポジトリをスキャンして依存関係を検出する
- 依存関係の更新があるかどうかを確認する
- 依存関係を更新するためのコミットとマージ/プルリクエストの作成
様々なプラットフォーム、マネージャーに対応しています。
Renovate良いポイント
- renovateを適用したいリポジトリを選択できる
- プルリクを受けるスケジュールを作成できる
- issueに可視化できるダッシュボードが追加される
- リリースノートを表示してくれるので変更点が一目でわかる
- 似たようなパッケージをグループ化してプルリクしてくれる
- babel関連のパッケージなどはデフォルトでまとめてくれる
- まとめたいパッケージは自分でも指定できる
- Node.jsのバージョンにも対応
- volta(package.jsonのvoltaフィールドに対応)
- LTSのリリースのアップグレードを提供してくれる
インストール
公式を参照しながらやればすぐ終わる
共有プリセットを作る
全てのリポジトリで同じ設定が重複しないように共有プリセットを作ることができます。
renovateの設定を変更したいときに、個々のリポジトリにあるrenovate.json
を変更することなく、一つのファイルで設定を管理することができます。
GitHubで共有プリセットを作成する
- 新しいリポジトリを作成する(例:
renovate-config
)- リポジトリ名はなんでもOK。公式を参考に
renovate-config
を作成する
- リポジトリ名はなんでもOK。公式を参考に
-
renovate-config
リポジトリにdefault.json
を作成する- デフォルトでは
default.json
を確認します。名前付きプリセットを使用することもできますが、今回は割愛します - 共有可能なプリセットはJSON形式のみ使用可能です
- デフォルトでは
-
default.json
にrenovateの設定を書いてデフォルトブランチ(例: main)に適用する- renovateはデフォルトブランチにある
default.json
ファイルを探します
- renovateはデフォルトブランチにある
これで共有プリセットの完成です(簡単!)
共有プリセットを使用する
renovateを適用したリポジトリにあるrenovate.json
を以下に書き換えます。
「github>ユーザー名/リポジトリ名」のようにextends配列で参照するだけ。
{
"extends": ["github>yukiji/renovate-config"]
}
今後renovateの設定を変更したいときはrenovate-config/default.json
を変更するだけなので管理が楽になります。
色々設定してこうなった
一旦個人開発はこちらで運用してみようと思います。
下記の参考資料にある各記事も参考にしてみました。
renovateはデフォルトのconfig:base
に既に色々と設定されています。
基本的にconfig:base
をオーバーライドしていく形で設定していきます。
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json", //設定項目の補完
"extends": [
"config:base"
],
"timezone": "Asia/Tokyo", // タイムゾーンを日本仕様に
"schedule": [
"every weekend" // プルリクは週末(土日)だけ
],
"prConcurrentLimit": 10, // プルリクの上限は10まで
"packageRules": [
{
"groupName": "webpack family", // webpack関連はまとめて1つのプルリクにする
"matchPackagePatterns": [
"webpack",
"-loader$"
]
}
]
}
renovateは設定項目数がめっちゃあります。(一応全部見ました)
実際に運用してみて課題点などがあればその都度、公式ドキュメントを参考にしながら改善を加えていけばいいかなぁと個人的には思います。
まとめ
まだ運用して間もないですが、週末にプルリクが作成され、平日にリリースノートを見ながら適用していくスタイルが個人的にはフィットしてます。
ライブラリに対しての情報感度が高くなるものいいですね。
テストを書いて自動マージなんかも今後はやっていきたい〜。
Tips
renovate configをチェックする
renovateのconfigが正しいかチェックするツールがあります。
renovateパッケージに含まれるrenovate-config-validator
を設定ファイルがある場所で実行します。タイポしているとエラーで怒ってくれます。
ファイル名がdefault.json
だと反応してくれないところが気になる。
$ npm i -g renovate
$ renovate-config-validator
INFO: Validating renovate.json
INFO: Config validated successfully
後から適用したいリポジトリを選択する
- GitHubの
Settings
->Applications
->Renovate
のConfigure
を選択 - 初回インストールの手順と同じで、Renovateを適用したいリポジトリを全て選択するか個別に選択する
気になるconfigメモ
- enabledManagers
- prCreation
- Monorepo Presets
公式ドキュメント
参考資料