0
Help us understand the problem. What are the problem?

posted at

updated at

Renovateを使ってそれぞれのパッケージのアップデートを、半自動化してみた

要約

いちいちyarn upgradeを気が向いたときに叩くのは面倒なので自動化しようぜ

導入の前に

Renovateって何

例えばNode.jsの物であればpackage.jsonに記載されたnpmパッケージに更新があった場合に、自動で検知してPull Requestを出してくれるブツです。他にもGithubActionsやdocker-compose、Dockerfileなんかもやってくれます。
GitHub Marketplaceから導入する場合、
今回は、Renovateによるnpmパッケージ定期更新を参考に、私が作って管理しているDiscordBotに導入してみます。

導入する

まずは私が作って管理しているDiscordBotに、GitHub Marketplaceから導入していきます。

GitHub MarketplaceのRenovateのページへ移動する。
画面最下部のPricing and setupへ移動し、申請するアカウントが間違っていないことを確認したうえでInstall it for freeを押す。
前項(Renovateって何)で挙げた記事には有料プランが存在する旨が書いてありましたが、少なくとも本記事執筆時点では無料プランのみでした。Unlimited Private and Public repositories per accountともあるし、おそらく変わったのでしょう。
image.png
確認画面の内容をよく確認したうえでComplete order and begin installationします。
image.png
最後に、インストールするリポジトリを選択します。複数選択できるのでいい感じにやっていってください。
多分All repositoriesでも問題はないのでしょうがえらいことになりそう
image.png
導入が完了するとこんな画面が出てきます。

image.png
待ちきれないのでclick hereしました。
image.png

Githubと連携してやると、Renovateに登録するような画面になります。
image.png
登録が完了すると、Dashboardへ遷移します。(画像は塗りつぶしがありますが、ここには他のOrganizationsが出てます。)
スクリーンショット 2022-08-03 211343.jpg
さて、Githubの該当のリポジトリのページへ移動すると、プルリクが生えているので確認します。今回生えたのはこれ(リンク)
このままマージしてもいいのですが、さすがに検証せずにそのまま、というのも怖いので適当に満足いくまでローカルで試してからマージします。ちなみに、案の定というかコケたので泣きながら該当ブランチに修正コミット入れてます。ついでに該当箇所について、テスト書けそうだったので分割していい感じにしました
最終的にこんな感じで。
image.png

renovate.jsonをいじる

いい感じにグループ化する

まずプルリクの際にグループしてくれるテンプレート一覧を確認します。今回挙げたDiscordBotで採用した物をピックアップしてみます。

  • group:allNonMajor
  • group:definitelyTyped
  • group:nodeJs

自動アップデートさせない(バージョンの固定をしたい場合)

ignoreDepsの中に配列の形で指定してやります。

その他

最終的にこんな感じになりました。
いじった後トリガー引いてやったら割とポコポコ生えてきて楽しい見た目になりました。
image.png

終わりに

もともとnpmパッケージの更新だけを目的に導入していたのでActionsやDockerまで面倒見てくれるのは予想外でしたね。。。
また後でRenovateのセルフホストするパターンについて追記したいと思います。

参考にさせていただいた記事

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?