Pull Request をまとめてくれる Grouped version updates for Dependabot が公開ベータとなりました

2023.07.27

こんにちは、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 の場合は次のような コンフィグファイルを作成します。

.github/dependabot.yml

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: weekly

version updates のチェックで更新対象となるパッケージがあると、いくつもの Pull Request がオープンされます。

しかし、Pull Request をマージする過程で次のようにコンフリクトが発生する場合があります。この場合は手動で解決する必要があります。

Grouped version updates を使う場合

Grouped version updates を使う場合は、次のようなコンフィグファイルを作成します。

.github/dependabot.yml

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 されたら是非とも導入したいですね。

参考

以上