当ブログはGithub actionsでビルドしたあとサーバーにデプロイするようにしています。
版管理はgitで画像はlfsを利用しています。
テーマは hugo-PaperModを利用しておりsubmoduleになっています。

actionsの設定

ほぼ重要なのはチェックアウト周りだけなので抜粋はチェックアウト周りだけです。
やっていることは lfs を有効にすることと submodule をチェックアウト時に取得することです。

    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          lfs: true
          submodules: recursive

submodulesと書かずにsubmoduleと書いてしまって小一時間悩んでしまいましたがsが必要です。
submoduleにしてしまった場合次のような警告が出ますがそのまま実行されます。

Unexpected input(s) 'submodule', valid inputs are ['repository', 'ref', 'token', 'ssh-key', 'ssh-known-hosts', 'ssh-strict', 'persist-credentials', 'path', 'clean', 'fetch-depth', 'lfs', 'submodules', 'set-safe-directory', 'github-server-url']

hugo側の設定

大きい画像をshortcodesを利用して変換する場合時間がかかってタイムアウトをする場合があります。
なので私はtimeout: 120sという設定を入れています。
timeoutのフォーマットはGoのtime.ParseDurationの対応しているフォーマットです。