Dependabot を使うと「依存パッケージ」の更新を自動化できる.対応言語も幅広く,個人的には JavaScript / Ruby / Python / Docker をよく使っている.最高に便利なんだけど,例えば JavaScript などはリリース頻度が高く,すぐにプルリクエストが溜まってしまう(プルリクエスト数の制限はできる).最近は「Automatic PR merging(プルリクエスト自動マージ機能)」を使うことも多く,設定例を紹介する.
Dependabot 設定画面
「Automatic PR merging」をすぐに試すなら設定画面を使う.true
or false
という単純な設定ではなく「ランタイム依存」と「開発依存」に対してアップデートレベルを設定できる.さらに特定のパッケージをホワイトリスト形式で設定することもできる.
Runtime dependency PRs to merge automatically
(ランタイム依存)None
Patch updates (security only)
Patch updates (all)
Minor updates
All updates
Development dependency PRs to merge automatically
(開発依存)None
Patch updates (security only)
Patch updates (all)
Minor updates
All updates
Whitelisted dependencies to merge automatically (all versions)
参考までに設定画面を載せておく.
Dependabot config files
Dependabot には「config files」の仕組みもあり,リポジトリに .dependabot/config.yml
を置いておくと設定ファイルを GitHub で管理できる.設定ファイルに「Automatic PR merging」を設定する場合は automerged_updates
を使う.詳しくは以下の設定項目から選べる.
automerged_updates
dependency_type
development
production
all
update_type
security:patch
semver:patch
semver:minor
in_range
all
dependency_name
設定例 1 : 全てのプルリクエストを自動マージする
サンドボックス環境など,全てのプルリクエストを自動マージしても大丈夫な場合は dependency_type
と update_type
に all
を設定する.今回は JavaScript を前提にする.
version: 1 update_configs: - package_manager: javascript directory: / update_schedule: daily automerged_updates: - match: dependency_type: all update_type: all
設定例 2 : マイナーバージョンアップまではプルリクエストを自動マージする
基本的に「メジャーバージョンアップ」だと非互換な更新を含む可能性もあるため,例えば「マイナーバージョンアップまで」ならプルリクエストを自動マージするという戦略もある.その場合は update_type
に semver:minor
を設定する.
version: 1 update_configs: - package_manager: javascript directory: / update_schedule: daily automerged_updates: - match: dependency_type: all update_type: semver:minor
設定例 3 : 特定のパッケージに限定して自動マージする
例えば axios
や react*
など,特定のパッケージに限定して自動マージする場合は dependency_name
にパッケージ名を設定する.ワイルドカードも使えるため,記述量を減らすこともできる.
version: 1 update_configs: - package_manager: javascript directory: / update_schedule: daily automerged_updates: - match: dependency_name: axios - match: dependency_name: react* update_type: semver:minor
まとめ
Dependabot の「Automatic PR merging」を使うとプルリクエストを自動マージできる.今回は「config files」の設定例を紹介した.
なお,自動テストがエラーになった場合にプルリクエストが自動マージされてしまうと困る.ドキュメントに書いてある通り,自動テストを設定している場合は,ステータスを確認する仕組みになっている.実際に CircleCI を使って,一時的に自動テストがエラーになるようにしても自動マージはされなかった.Dependabot will still automatically merge this pull request if you amend it and your tests pass.
というコメントもある通り,自動テストを修正すればマージされる.今回は master
ブランチ側でテストを直して,プルリクエストに @dependabot rebase
とコメントしたらマージされた.
Dependabot will wait until all your status checks pass before merging.