Dependabotを利用していると、1つのライブラリアップデートに対して、1つのプルリクエストが作成されていました。
Renovateなどを用いると、複数のライブラリの更新を1つのプルリクエストにまとめることができました。
最近、Dependabotを調べていたら、2023年8月のアップデートで、「ベータ版」としてGroup Dependabot Version Updates という機能ができていました。
この機能により、Dependabotでも複数のライブラリアップデートを、1つのプルリクエストにまとめることができるので、早速それを試してみました。
使い方
主に以下の5つを使って書いていきます。
オプション | 説明 |
---|---|
applies-to | version-updates か security-updates を記載します。つまり、バージョンのアップデートか、セキュリティのアップデートかを指定します。 |
dependency-type | development か productionを指定します。 指定した環境のライブラリに制限したアップデートになります。 |
patterns | この正規表現でマッチしたライブラリを更新します。 |
exclude-patterns | この正規表現にマッチしたライブラリは更新しません。 |
update-types | セマンティックバージョニングのmajor、minor、patchのどのレベルの高sんを対象にするか指定します |
例えば
以下がgrouping機能を使ったdependabot.ymlです。
gropus:
以下が特に上記で説明した機能を使ったものです。
version: 2
updates:
- package-ecosystem: bundler
directory: /
schedule:
interval: daily
time: "04:00"
timezone: Asia/Tokyo
reviewers:
- hatsu38
open-pull-requests-limit: 10
groups:
minor-and-patch:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
exclude-patterns:
- "rails"
minor-and-patch
という名前のグルーピングを作成しました。
applies-to: version-updates
とかいたので、セキュリティアップデートではなく、バージョンアップデートを対象にしています。
pattenrs:
には、 *
を書きました。つまり、すべての名前のライブラリを対象にしています。
がその内、update-types
で書いた minor
, patch
のバージョンアップのみに絞り込んだアップデートです。
さらに rails
gemのアップデートは、パッチバージョンのアップデートでも対象外にしています。
以下は、npmの場合のバージョンアップデートで作成されたプルリクエストです。
便利ですね。
今まではライブラリごとにプルリクエストが作成されていたため、CIの時間もそのプルリクエストごとにかかっていました。
が、このグルーピング機能によって、1つにまとめられるので、CI時間の短縮にもなりそうです!
ドキュメントはこちらです↓