Dependabot のテストやデバッグに使用する dependabot/cli は、これまで GitHub 等のレポジトリを指定して、依存関係の更新ジョブを出力することしかできなかったが、新たにローカルディレクトリの指定が可能になった。
毎回 GitHub レポジトリにプッシュする必要がなくなり、テストが容易になる。
現時点で Usage に反映されていないが、以下のとおり --local とパスを指定する。レポジトリ名がないとエラーになるが、適当な文字列で問題なかった。
$ dependabot update terraform dummy --local . -o job.yaml
これを利用して、Dependabot が、特定の条件で Terraform モジュール内のバージョン制約を更新しない挙動を、いくつか確認した。Dependabot は、与えられたディレクトリを起点に *.tf ファイルの内容を読み取って、参照されているモジュールのみをたどるアプローチを採用している。
ひとつは JSON Configuration Syntax で記述された *.tf.json ファイルから参照されたモジュールが更新されない問題で、Add Terraform JSON support by melendezd · Pull Request #5293 · dependabot/dependabot-core · GitHub で解決すると思われる。
もうひとつは、モジュールの参照が main.tf -> a/main.tf -> a/b/main.tf -> a/b/c/main.tf のように 3 回以上になる場合、更新されない問題があった。
どちらも、ワークアラウンドとしては、更新されないモジュールのディレクトリを dependabot.yml ファイルに追加すればよい。
version: 2 updates: - package-ecosystem: terraform directory: / schedule: interval: monthly - package-ecosystem: terraform directory: /a/b/c schedule: interval: monthly