STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

Dependabotを活用してライブラリのアップデートを効率化

はじめに

こんにちは、STORESの高田です。

今回は Dependabot を用いてライブラリのアップデートに追従する方法についてご紹介します。

プロジェクト開始時に見落とされがちな物のうちの一つに、ライブラリのアップデートがあると思います。途中から更新に追いつこうとすると気が思い作業になるので、早めに設定しておくと後々苦労せずに済みます。

アップデート方針を決める

アップデート方針はチームに合うように調整すると良いと思いますが、今回は以下の方針で設定します。

  • ライブラリのアップデートにはできるだけ工数をかけない
  • セキュリティアラートは可能な限り早く対応する

Dependabot の設定

Dependabot には「依存関係のアップデート(.github/dependabot.yml)」と「脆弱性関連の通知(Dependabot alerts)」があります。今回の方針に沿うためにはそれぞれ設定していく必要があります。

上記のアップデート方針に対応するそれぞれの設定例は次のようになります。

.github/dependabot.yml

今回はプロジェクト初期での設定を想定して、 package-ecosystem で gomod, npm, github-actions, docker を設定します。

ポイントとしては次の通りです。

  1. groupsdirectories を設定しておく
    • 関連するライブラリの更新が1つの Pull Request に集約されるためレビューしやすくなります
  2. github-actionsdocker も設定しておく
    • 見落とされがちですが、アップデートがあるので対応しておきます

設定例は次の通りです。

version: 2

updates:
  - package-ecosystem: "gomod"
    directories:
      - "/pg-api"
      - "/backend"
    open-pull-requests-limit: 5
    reviewers:
      - "backend-reviewers"
    schedule:
      interval: "monthly"
      time: "10:00"
      timezone: "Asia/Tokyo"
    groups:
      gomod-dependencies:
        patterns:
          - "*"

  - package-ecosystem: "npm"
    directory: "web-ui"
    open-pull-requests-limit: 10
    rebase-strategy: "disabled"
    reviewers:
      - "frontend-reviewers"
    schedule:
      interval: "monthly"
      time: "10:00"
      timezone: "Asia/Tokyo"
    groups:
      npm-dependencies:
        patterns:
          - "*"

  - package-ecosystem: "github-actions"
    directory: "/"
    open-pull-requests-limit: 5
    reviewers:
      - "backend-reviewers"
    schedule:
      interval: "monthly"
      time: "10:00"
      timezone: "Asia/Tokyo"
    groups:
      dependencies:
        patterns:
          - "*"

  - package-ecosystem: "docker"
    directories:
      - "**/*"
    reviewers:
      - "backend-reviewers"
    schedule:
      interval: "monthly"
      time: "10:00"
      timezone: "Asia/Tokyo"

※抜粋したため一部省略しています。また、その他の設定項目は dependabot.yml ファイルの構成オプション - GitHub Docs をご参照ください。

Dependabot alerts

https://github.com/:org/:repo/settings/security_analysis から "Dependabot alerts" と "Dependabot security updates" を有効にします

このように設定すると、当初のアップデート方針に沿って運用できると思います。

事例として参考にしてもらえればと思います。