- 記事作成日:2022/12/15
情報
名前 | URL |
---|---|
Github | https://github.com/renovatebot/renovate |
公式サイト | https://docs.renovatebot.com/ |
デモサイト | |
開発母体 | MEND |
version | 34.56.3 |
言語 | TypeScript |
価格 | 無料 |
ライセンス | AGPL |
何ができるもの?
これらのパッケージに対する依存関係の自動アップデート。
- Bazel
- Docker
- Golang
- Java
- JavaScript
- Node.js Versions
- Nuget
- PHP
- Python
- Ruby
- Rust
dependabot と近い働きをするが、こちらは最新にアップデートしていくものであり 「脆弱性があったから」 というわけではない。
利用シーン
- パッケージのアップデートを自動化したい時
登場背景
by DeepL
なぜ Renovateを使うのか?
- 依存関係を更新し、ファイルをロックするためのプルリクエストを取得します。
- RenovateがPRを作成するタイミングをスケジューリングすることで、ノイズを減らすことができます。
- Renovateはmonoreposを含め、関連するパッケージファイルを自動的に見つけます。
- 設定ファイルにより、botの動作をカスタマイズすることができる
- ESLintのような設定プリセットで設定を共有できる
- 非推奨の依存関係からコミュニティが提案する代替関係へ移行するための代替PRを取得(npmパッケージのみ)
- オープンソース
所感
導入事例を眺めると、使いやすさの観点で renovate を押す人がちらほら見受けられました。
- Renovateの導入と半年間の運用の振り返り
- Renovateで人類には早すぎたライブラリの更新を自動化してみた(in gitlab-ci - Adwaysエンジニアブログ
- Renovate と Dependabot の比較 | Melody
- DependabotとRenovateってどっちがいいの? - Qiita
dependabot は GitHub が正式にリリースしているという点もあります、危殆化をトリガーにして動くので renovate とは出発点が違うかなと思います。
ただ dependabot も GitHub Dependabot のバージョンアップデートについて - GitHub Docs があるので、renovate を包含していそうです。
結局バージョンを上げるのはどっちも同じなのですが、dependabot は解決する脆弱性情報を教えてくれるのがありがたいなーという感じです。(マージの必要性がわかる)
とはいえ、ソフトウェアのアップデートはやっていくべきだとは思うので、理由わかんないけど最新化していくというのもあながち間違った戦略ではないと思います。(= 最新かすることで大抵のトラブルが回避できる)
ただ、頻繁に PR がきすぎても困るので、両方有効にしておき使うというのがありなのかなあと思ったりしました。
使い方
Renovate · GitHub Marketplace にいって install it for free
をクリック。
購入画面に飛ばされますが、0円なのでよし。
以前作った Ethereum と js のリポジトリに適用してみました。 lirlia/Rock-paper-scissors-ethereum
するとPRが飛んできてますねー。
Configure Renovate by renovate[bot] · Pull Request #1 · lirlia/Rock-paper-scissors-ethereum
デフォルトのコンフィグのプリセットに基づき、Renovateが行います。
- このオンボーディングPRがマージされたときのみ、依存関係の更新を開始します。
- Renovate Dependency Dashboardの作成を有効にします。
- Renovateがセマンティックコミットを検出した場合、依存関係にはセマンティックコミットタイプのfixを、それ以外にはchoreを使用します。
- node_modules、bower_components、vendor、様々なtest/testsディレクトリは無視します。
- 依存関係を固定するか、範囲を維持するかを自動検出します。
- PRの作成を1時間に2つまでに制限しました。
- PRの作成は1時間に2件までに制限。
- 既知の monorepo パッケージをグループ化
- モノレポでないパッケージのグループ化の推奨リストを使用する。
- パッケージの既知の問題に対する回避策をまとめたもの。
PR の内容としては renovate.json
を更新してました。
ということでマージします。
飛んできた jQuery のアップデート
jQuery のバージョンが古いようで、v3.3.1 → v3.6.2 にアップデートする変更が飛んできています。
内容はシンプルで、html ファイルの中身のチェックをしてくれています。(そんなところまで見てくれるのか、すごいな)