要約
いちいち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
ともあるし、おそらく変わったのでしょう。
確認画面の内容をよく確認したうえでComplete order and begin installation
します。
最後に、インストールするリポジトリを選択します。複数選択できるのでいい感じにやっていってください。
多分All repositories
でも問題はないのでしょうがえらいことになりそう
導入が完了するとこんな画面が出てきます。
Githubと連携してやると、Renovateに登録するような画面になります。
登録が完了すると、Dashboardへ遷移します。(画像は塗りつぶしがありますが、ここには他のOrganizationsが出てます。)
さて、Githubの該当のリポジトリのページへ移動すると、プルリクが生えているので確認します。今回生えたのはこれ(リンク)。
このままマージしてもいいのですが、さすがに検証せずにそのまま、というのも怖いので適当に満足いくまでローカルで試してからマージします。ちなみに、案の定というかコケたので泣きながら該当ブランチに修正コミット入れてます。ついでに該当箇所について、テスト書けそうだったので分割していい感じにしました
最終的にこんな感じで。
renovate.json
をいじる
いい感じにグループ化する
まずプルリクの際にグループしてくれるテンプレート一覧を確認します。今回挙げたDiscordBotで採用した物をピックアップしてみます。
group:allNonMajor
group:definitelyTyped
group:nodeJs
自動アップデートさせない(バージョンの固定をしたい場合)
ignoreDeps
の中に配列の形で指定してやります。
その他
最終的にこんな感じになりました。
いじった後トリガー引いてやったら割とポコポコ生えてきて楽しい見た目になりました。
終わりに
もともとnpmパッケージの更新だけを目的に導入していたのでActionsやDockerまで面倒見てくれるのは予想外でしたね。。。
また後でRenovateのセルフホストするパターンについて追記したいと思います。