Dependabot CLI がローカルディレクトリをサポートした

Dependabot のテストやデバッグに使用する dependabot/cli は、これまで GitHub 等のレポジトリを指定して、依存関係の更新ジョブを出力することしかできなかったが、新たにローカルディレクトリの指定が可能になった。

github.com

毎回 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