タダです.
Git サブモジュールを使っているリポジトリでサブモジュールの更新を自動で検知・自動でマージできるよう仕組み化したい要望があり,Dependabot で対応できないかと思って調査・検証したメモを書きます.
Dependabot のサポート範囲
Dependabot が監視する,新バージョンのパッケージマネージャは以下のドキュメントをまとめられています.Git サブモジュールも対象になっていたので,Dependabot での監視を仕組み化検証することにしました.
dependabot.yml の定義
Git サブモジュールの更新を検知する Dependabot の定義として以下で設定しました.今回サブモジュールはプライベートリポジトリになっていて,ドキュメントとこのissueを参考に設定しました.secrets.DEPENDABOT_PRIVATE_KEY を Fine-grained tokens(試しに Read access to metadata/Read and Write access to administration and code を付与)を発行して Dependabot Secrets に登録しました.
version: 2 registries: git-submodule-repo: type: git url: https://github.com username: x-access-token password: ${{ secrets.DEPENDABOT_PRIVATE_KEY }} updates: - package-ecosystem: "gitsubmodule" directory: "/" schedule: interval: "daily" time: "10:00" timezone: "Asia/Tokyo" registries: - git-submodule-repo
この状態で test-submodule というサブモジュールの更新を検知して Pull Request を作成できました.

Pull Request を自動承認及び自動マージさせる
ついでにサブモジュールの Pull Request を自動承認とマージを GitHub Actions で行ってみました.以下はサンプルコードですが, dependabot/fetch-metadata を参考にしています.自動承認と自動マージのセクションで処理させるのはサブモジュールの時だけに限定するため dependabot/fetch-metadata の output を確認し, ${{ contains(steps.metadata.outputs.package-ecosystem, 'submodules') }} という条件にしました.
name: Dependabot auto-approve for submodule on: pull_request: types: opened jobs: submodule: runs-on: ubuntu-latest permissions: pull-requests: write contents: write if: github.event.pull_request.user.login == 'dependabot[bot]' steps: - name: Dependabot metadata id: metadata uses: dependabot/fetch-metadata@8ca800c1642f5e46fd4fe73c07af0e3baf1375d6 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Auto approve a PR & merge it if: ${{ contains(steps.metadata.outputs.package-ecosystem, 'submodules') }} run: | gh pr review --approve "$PR_URL" gh pr merge --auto --merge "$PR_URL" env: PR_URL: ${{github.event.pull_request.html_url}} GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
この Actions で実行すると以下のスクリーンショットのように自動承認と自動マージが実現できました.

まとめ
Git サブモジュールの更新を定期的に Dependabot で検知と自動承認及び自動マージができるかを試したのでまとめました.Dependabot が使用する PAT はもっと権限を絞るべきなので確認できたら記事の内容も後追いして更新します...