ついに来た!Dependabotのgroup version update機能の紹介
Dependabotは主な機能の1つとして、Dependencyを更新するためのPRを自動で作成する機能があります。
しかし、これまでのDependabotでは、PRが1つずつ作成されるため管理が意外と大変だと感じている方も多いのではないでしょうか。
Dependabotには、1つのPRに複数のDependencyの更新をまとめる機能を望む声は多く、長らくIssueで議論がなされていました。
この複数のDependencyの更新を1つのPRにまとめるというアプローチには、Renovateなどを使う方法もありましたが、私はDependabotへ期待し、こうした方法は取っておりませんでした。
そして、ついに先日GitHubからPublic BetaとしてDependabotのGrouped version updates機能が公開されました。
早速こちらの機能を個人サービスで使ってみたところかなり良かったので紹介したいと思います!
dependabot.ymlにgroupsのoptionを定義する
まず、複数のDependencyを1つのPRにまとめる機能、 Grouped version updates
を使うためには、dependabot.ymlにgroupsの定義をする必要があります。
groupsの詳細はこちら。
私が昔運用していた個人サービスのdependabot.ymlを題材とします。
groupsのoptionをpackage-ecosystemごとに追加します。
最小の変更ではありますが、これだけで十分です。
# dependabot.yml
version: 2
updates:
- package-ecosystem: "gomod"
directory: "./api"
schedule:
interval: "monthly"
+ groups:
+ dependencies:
+ patterns:
+ - "*"
- package-ecosystem: "npm"
directory: "./front"
schedule:
interval: "monthly"
ignore:
- dependency-name: "sass-loader"
+ groups:
+ dependencies:
+ patterns:
+ - "*"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
今回作成したPRはこちらです。
Grouped version updates
によって作成されるPR
上記のdependabot.ymlの修正PRをマージすると、まもなくDependabotによってPRが作成されました。
PRのタイトルからも分かる通り、複数のDependencyの更新がされています。
PRを開くと、
- 更新対象のDependency一覧
- DependencyごとのRelease notes, Changelog, Commits
が記載されています。
これぞまさに、我々が求めていた機能ではないでしょうか!?
実際に、作成されたPRは下記の2つです。
終わりに
Public Betaとはいえ、かなり期待通りの内容です。
今回は、dependabot.ymlの定義について、かなりシンプルな定義のみをしましたが、実際はDependencyの名前ごとに作成するPRを分けるなどのカスタマイズが可能です。詳しくはドキュメントを御覧ください。
Discussion