🗂

renovateでパッケージアップデートを自動化する

2024/07/13に公開

こんにちは!お茶です!
今回は開発時に使用しているrenovateについて紹介したいと思います!

課題感

renovate導入以前の弊社の開発業務では、ライブラリやプロジェクトの依存関係などは定期的にキャッチアップしてこまめなアップデートを手動で行なっていました。その中で以下のような課題がありました。

新たな更新をメンバーでキャッチアップしないといけない

頻繁なアップデートを手動で行うと人的コストが大きくなってくる

差分の大きい変更の対応など運用ルールに沿った形で自動化を行いたい

これらの解決に定期アップデートを自動化できるrenovateを導入しました。

renovateとは

開発業務を行う中で、依存パッケージの管理を手動で行うのはとても煩わしいと思います。
renovateはpackage.jsonなど依存関係を定義しているファイルからパッケージの更新情報を読み取り、自動で更新のプルリクエストを作成してくれる便利なツールです。
https://www.mend.io/renovate/
多彩な編集項目があるので運用ルールに則って自動化を行うことができます。
https://docs.renovatebot.com/configuration-options/

導入

インストール

こちらのページからインストールします
https://github.com/apps/renovate

only select repositoriesからrenovateを導入したいリポジトリを選択し、Installボタンを押すとインストールされます。

設定

導入後の初期のPRでrenovate.jsonが作成されるので編集して設定を書いていきます

DependencyDashboardの無効化

renovateにはアップデートしたほうがいい情報を提示しPRを作成するおせっかいなダッシュボードが付属しています。
無効化する場合は

"extends": ["config:base", ":disableDependencyDashboard"],

で無効化できます。

メジャーバージョンアップデート

メジャーバージョンが上がる場合、大幅な破壊的変更など自動で更新されるのが怖いといった場合があると思います。
その場合メジャーバージョンの更新PRを更新するかどうかを設定することができます。

"major": {
    "enabled": false
}

enabledをtrueかflaseかで有効・無効を切り替えることができます。

自動Approve&自動マージ

作成された更新PRを自動でApprove,マージするかを選択できます。
こちらもtrueかfalseで切り替え可能なので不安要素があればfalseにしておきましょう

"autoApprove": false,
"automerge": false

運用

今回紹介したrenovateを使って現在は以下のような運用を行なっています。

ダッシュボードは無効

メジャーバージョンが変動するPRは作成しない

Approveとマージは手動で行う

自動化する上で元の動作を変えてしまうような破壊的変更や大きな差分を含むアップデートをうっかり取り込んでしまわないように、メジャーバージョンやApproveやマージといった最終確認に関してオプションが充実しているので運用ルールに沿って依存関係のアップデートを大きなトラブルなく自動化することができました。

最後に

renovateを導入することで面倒だった依存パッケージ管理がかなり楽になりました。
更新を手動でチェックし、逐一更新作業を行っていると積もり積もって大きなコストになるので運用ルールを定めて自動化できる作業はドンドン自動化することで開発効率や保守運用効率も上げられると思います。

Discussion