Pull Request をまとめてくれる Grouped version updates for Dependabot が公開ベータとなりました
こんにちは、CX事業本部 Delivery部の若槻です。
Dependabot version updates を使用すると、リポジトリ内で管理している依存関係のアップデート対応を自動化することができます。
先月のアップデートで、version updates によりオープンされる Pull Request をグループ化する機能(Grouped version updates)が公開ベータで利用可能となりました。
これにより、今までは更新対象のパッケージが多い場合は Pull Request が大量にオープンされたり、依存関係の解決でコンフリクトが発生する場合がありましたが、Grouped version updates によりこれらの問題を解決することができます。
試してみた
Grouped version updates を使う場合と使わない場合とで試してみます。
Grouped version updates を使わない場合
通常の version updates の場合は次のような コンフィグファイルを作成します。
version: 2 updates: - package-ecosystem: "npm" directory: "/" schedule: interval: weekly
version updates のチェックで更新対象となるパッケージがあると、いくつもの Pull Request がオープンされます。
しかし、Pull Request をマージする過程で次のようにコンフリクトが発生する場合があります。この場合は手動で解決する必要があります。
Grouped version updates を使う場合
Grouped version updates を使う場合は、次のようなコンフィグファイルを作成します。
version: 2 updates: - package-ecosystem: "npm" directory: "/" schedule: interval: weekly groups: aws-sdk-dependencies: patterns: - "@aws-sdk/*" exclude-patterns: - "@aws-sdk/client-s3"
updates.groups
にグループ名を指定します。グループは複数作成できます。updates.groups.{グループ名}.patterns
にグループに含めるパッケージ名を指定します。ここでは@aws-sdk/*
としているので、@aws-sdk/lambda
や@aws-sdk/s3
などのパッケージがグループに含まれます。updates.groups.{グループ名}.exclude-patterns
にグループから除外するパッケージ名を指定します。ここでは@aws-sdk/client-s3
としているので、@aws-sdk/client-s3
はグループから除外されます。
チェックが行われると、Bump the aws-sdk-dependencies group with 2 updates
という名前の Pull Request がオープンされています。
Pull Request の内容を見ると、@aws-sdk/util-dynamodb
および @aws-sdk/client-dynamodb
の2つのパッケージの更新がグループ化されていることが分かります。
一方で exclude-patterns
に指定した @aws-sdk/client-s3
はグループ化されていないことが分かります。
ちなみに、Grouped version updates を有効にする以前にオープンされていた既存の Pull Request は、グループ対象であるかどうかに関わらず、自動でクローズされる挙動となりました。
おわりに
version updates によりオープンされる Pull Request をグループ化する機能(Grouped version updates)が公開ベータで利用可能となりました。
現在はベータなので、何回か試しているとチェックが走っても Pull Request がオープンされないなどの不安定な挙動もありましたが、とても便利な機能ではあるので GA されたら是非とも導入したいですね。
参考
- Dependabot と GitHub Actions でAWS CDKのスナップショットテストを自動化してみた | DevelopersIO
- GitHub Dependabotが自動作成してくれるPRの中で、パッチバージョンの更新だけAutoMergeする | DevelopersIO
以上