Rhyztech blog

dependabotの使ってみた

tech

Dependabot は依存ライブラリのアップデートを監視し、自動的に更新用のプルリクエストを作ってくれるボットです。 さらに、設定次第でセキュリティアップデートを自動でマージすることもできます。 Github が無料で提供しています。(ありがてぇ

インストール

ここ からインストールして、利用するリポジトリを選択します。

設定ファイル

利用するリポジトリに .dependabot/config.yml で監視するライブラリやマージする条件を決めます。 公式のドキュメントを参考に yaml ファイルを作成し、 公式のバリデーターでチェックすると良いです。

うちの rails プロジェクトはこんな感じ。

version: 1

update_configs:
  - package_manager: "ruby:bundler"
    directory: "/"
    update_schedule: "daily" # "live" or "daily", "weekly", "monthly" が選べる
    target_branch: "master"
    # default_reviewers:
    #  - "rhythm191"
    # default_assignees:
    #  - "rhythm191"
    allowed_updates:
      - match:
          dependency_type: "development"
          # Supported dependency types:
          # - "development"
          #   Development dependency group (supported by some package managers)
          # - "production"
          #   Production dependency group (supported by some package managers)
          # - "direct"
          #   Direct/top-level dependencies
          # - "indirect"
          #   Indirect/transient/sub-dependencies
          # - "all"
          update_type: "all"
          # Supported update types:
          # - "security"
          # - "all"
      - match:
          dependency_type: "production"
          update_type: "security"
      - match:
          dependency_name: "holiday_jp"
    automerged_updates:
      - match:
          dependency_name: "holiday_jp"
          update_type: "semver:minor"

  - package_manager: "javascript"
    directory: "/"
    update_schedule: "daily"
    target_branch: "master"
    automerged_updates:
      - match:
          dependency_type: "development"
          # Supported dependency types:
          # - "development"
          # - "production"
          # - "all"
          update_type: "all"
          # Supported updates to automerge:
          # - "security:patch"
          #   SemVer patch update that fixes a known security vulnerability
          # - "semver:patch"
          #   SemVer patch update, e.g. > 1.x && 1.0.1 to 1.0.3
          # - "semver:minor"
          #   SemVer minor update, e.g. > 1.x && 2.1.4 to 2.3.1
          # - "in_range"
          #   matching the version requirement in your package manifest
          # - "all"

設定の勘所だけど、

  • update_schedule: “live” はちょっと頻度が多すぎると思う。結局人が確認してマージするからライブラリの量によっては大変だと思う
  • defaultreviewers, defaultassignees は正直通知がうっとおしい w
  • dependency_type: “development” あたりはテストさえしっかりしてればマージしてしまっても良いと思う。

bot の動作設定

dependabot のホームページから “Setting”を選択して、bot の動作設定をします。 特に一番下の “Allow auto-merging to be enabled on projects” をチェックをつけないと自動マージが有効になりません。 後、時間が UTC なので日本時間との時差に注意が必要です。(10:00~17:00 に動かしたいなら 01:00〜08:00 に設定が必要です)

Copyright 2021, rhyztech. All Rights Reserved.