フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

【新規ツール探し】ソフトウェアのアップデートを自動で!GitHubで使える「Renovate」

  • 記事作成日: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 Docs

所感

導入事例を眺めると、使いやすさの観点で renovate を押す人がちらほら見受けられました。

dependabot は GitHub が正式にリリースしているという点もあります、危殆化をトリガーにして動くので renovate とは出発点が違うかなと思います。

blog.framinal.life

ただ dependabot も GitHub Dependabot のバージョンアップデートについて - GitHub Docs があるので、renovate を包含していそうです。

結局バージョンを上げるのはどっちも同じなのですが、dependabot は解決する脆弱性情報を教えてくれるのがありがたいなーという感じです。(マージの必要性がわかる)

とはいえ、ソフトウェアのアップデートはやっていくべきだとは思うので、理由わかんないけど最新化していくというのもあながち間違った戦略ではないと思います。(= 最新かすることで大抵のトラブルが回避できる)

ただ、頻繁に PR がきすぎても困るので、両方有効にしておき使うというのがありなのかなあと思ったりしました。

使い方

Renovate · GitHub Marketplace にいって install it for free をクリック。

購入画面に飛ばされますが、0円なのでよし。

picture 1

以前作った 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 ファイルの中身のチェックをしてくれています。(そんなところまで見てくれるのか、すごいな)