くりにっき

フルスタックキュアエンジニアです

Dependabotの設定ファイルを置くようにした

なにげなくDependabotを見てたらリポジトリ.dependabot/config.yml を置けることを気づいたので置いてみた

https://dependabot.com/docs/config-file/

ちなみに .dependabot/config.yml をコミットしてると設定画面でこんな表示になります

f:id:sue445:20190310145727p:plain

設定ファイルを置くメリット

  • 新しくリポジトリを作ってDependabotを導入する時にボタンをポチらずに済む
    • リポジトリから設定ファイルをコピーしてくればいつもの設定が導入できる
  • 設定をgitで履歴管理

いつも使ってる設定晒し

Rubyだとこれでだいたいいいはずですが他言語だと微妙に変えた方がいいかもしれないです。

# c.f. https://dependabot.com/docs/config-file/
version: 1

update_configs:
  - package_manager: "ruby:bundler"

    directory: "/"

    update_schedule: "daily"

    default_assignees:
      - sue445

    allowed_updates:
      - match:
          # Disable. Only top-level dependencies (and security patches for subdependencies)
          update_type: "all"

    automerged_updates:
      - match:
          dependency_type: "development"
          update_type: "all"
      - match:
          dependency_type: "production"
          update_type: "semver:patch"

    # Enable. Only lockfile updates (ignore updates that require Gemfile changes)
    version_requirement_updates: "off"

解説

default_assignees

PRが作られた時に誰をassignさせるか。

PRを見た後にchangelogを見に行ったりしてると実際にマージするのをちょいちょい忘れるので自分をassignしておくと便利

allowed_updates

設定画面の「Only top-level dependencies (and security patches for subdependencies)」に相当。

f:id:sue445:20190310150258p:plain

デフォルトだとこれに入っているんですが、そうするとGemfileに直接書かれてるgemしかbundle updateの対象にならなくて、gemの依存の依存のgemがupdateされないのでいつもこのチェックを外すようにしてます。

設定ファイルだと update_type: "all" を書けば同じ効果になります

automerged_updates

設定画面のAutomatic PR mergingに相当

f:id:sue445:20190310150517p:plain

個々の好みが分かれるところですが、僕は普段development dependencyのアップデートは全部自動マージして、runtime dependencyはパッチバージョンのアップデートのみ自動マージ(マイナーバージョンアップは手動)にしてます

version_requirement_updates

設定画面の「Only lockfile updates (ignore updates that require Gemfile changes)」に相当

f:id:sue445:20190310150832p:plain

デフォルトだとチェックが外れているんですが、そうすると Gemfile でバージョン固定していた場合にGemfileを書き換えてbundle updateするので、これにチェック入れとくことで Gemfile.lock のみ更新かけるようにしてます。

Gemfile でバージョン固定しているのはだいたいなんらかの理由があるはずなので書き換えられるのは困る)

設定ファイルだと version_requirement_updates: "off" に相当。

まとめ

ローカルで bundle update した時と同じ挙動にしたければ allowed_updatesversion_requirement_updates を書いとけばいいかと。