こんにちは、CX事業本部 Delivery部の若槻です。
以前のエントリで Dependabot の Grouped version updates を紹介しました。
Grouped version updates を利用することにより、Dependabot version updates による Pull Request を任意のグループでまとめて作成することができます。(現在パブリックベータ)
そしてこのたびの Dependabot のアップデートで、セマンティックバージョニング(semver)ごとにグループを作成することができるようになりました。
試してみた
Dependabot の構成
ドキュメントによると、update-types
オプションでminor
,patch
およびmajor
を指定できるようです。
今回は、次のようにマイナーおよびパッチバージョンを対象としたグループを設定した Dependabot の構成を作成します。
update-types
キーで
.github/dependabot.yml
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'daily'
groups:
angular:
patterns:
- '*'
update-types:
- 'minor'
- 'patch'
動作確認
古い依存関係を追加
最新バージョンよりメジャー、マイナーおよびパッチバージョンが古い依存関係を package.json に含めます。
package.json
{
"devDependencies": {
"@types/node": "20.5.0", // -> 20.5.1
"vite": "3.2.5", // -> 4.4.9
"vitest": "0.34.1", // -> 0.34.2
"luxon": "3.3.0", // -> 3.4.0
}
}
Pull Request の自動作成
変更を push すると、Dependabot により Pull Request が自動で作成されました。
Bump vite from 3.2.5 to 4.4.9
Bump the minor-and-patch group with 3 updates
Bump vite from 3.2.5 to 4.4.9
では、メジャーバージョンアップが単一の Pull Request として作成されています。
package.json
{
"devDependencies": {
- "vite": "3.2.5",
+ "vite": "4.4.9",
}
}
一方で Grouped version updates の Pull Request であるBump the minor-and-patch group with 3 updates
では、マイナーおよびパッチのバージョンアップのみがグルーピングされています。
package.json
{
"devDependencies": {
- "@types/node": "20.5.0",
+ "@types/node": "20.5.1",
- "vitest": "0.34.1",
+ "vitest": "0.34.2",
- "luxon": "3.3.0",
+ "luxon": "3.4.0"
}
}
update-types
オプションの動作を確認することができました。
metadata を確認してみる
ちなみに以前のエントリで試した方法で、GitHub Actions を利用して Dependabot の metadata を取得してみると、Bump the minor-and-patch group with 3 updates
をトリガーとしたワークフローでは次のような metadata が取得されました。
{
"updated-dependencies-json": "[{\"dependencyName\":\"@types/node\",\"dependencyType\":\"direct:development\",\"updateType\":\"version-update:semver-patch\",\"directory\":\"/\",\"packageEcosystem\":\"npm_and_yarn\",\"targetBranch\":\"main\",\"prevVersion\":\"\",\"newVersion\":\"\",\"compatScore\":0,\"maintainerChanges\":false,\"dependencyGroup\":\"minor-and-patch\",\"alertState\":\"\",\"ghsaId\":\"\",\"cvss\":0},{\"dependencyName\":\"vitest\",\"dependencyType\":\"direct:development\",\"updateType\":\"version-update:semver-patch\",\"directory\":\"/\",\"packageEcosystem\":\"npm_and_yarn\",\"targetBranch\":\"main\",\"prevVersion\":\"\",\"newVersion\":\"\",\"compatScore\":0,\"maintainerChanges\":false,\"dependencyGroup\":\"minor-and-patch\",\"alertState\":\"\",\"ghsaId\":\"\",\"cvss\":0},{\"dependencyName\":\"luxon\",\"dependencyType\":\"direct:development\",\"updateType\":\"version-update:semver-minor\",\"directory\":\"/\",\"packageEcosystem\":\"npm_and_yarn\",\"targetBranch\":\"main\",\"prevVersion\":\"\",\"newVersion\":\"\",\"compatScore\":0,\"maintainerChanges\":false,\"dependencyGroup\":\"minor-and-patch\",\"alertState\":\"\",\"ghsaId\":\"\",\"cvss\":0}]",
"dependency-names": "@types/node, vitest, luxon",
"dependency-type": "direct:development",
"update-type": "version-update:semver-minor",
"directory": "/",
"package-ecosystem": "npm_and_yarn",
"target-branch": "main",
"previous-version": "",
"new-version": "",
"compatibility-score": "0",
"maintainer-changes": "false",
"dependency-group": "minor-and-patch",
"alert-state": "",
"ghsa-id": "",
"cvss": "0"
}
update-types
オプションを指定した場合でもそれに対応する metadata 情報は特に取得されませんでした。アップデートのセマンティックレベルによりワークフローの分岐を実装したい場合は、アップデート中の最大のセマンティックレベルが入るupdate-type
やグループ名が入るdependency-group
を利用することになりそうです。
おわりに
Dependabot grouped version updates で semantic version level が利用可能になったのでご紹介しました。
パブリックベータであるからか、Grouped version updates はどんどん新しい機能がアップデートで便利になっていっているので、今後も注目していきたいと思います。
以上