ワークフローを実行するたびにツールのダウンロードで時間がかかる

jdx/mise-actionは毎回のワークフロー実行でmise installを実行するため、キャッシュがなければ実行のたびにツールをダウンロードし直すことになる。jdx/mise-actionにはキャッシュ機能が備わっており、2回目以降の実行を高速化できる。

キャッシュはデフォルトで有効になっている

キャッシュはcacheオプションのデフォルト値trueにより、何も指定しなくても有効になっている。GitHub Actionsのキャッシュを使って~/.local/share/mise(インストール済みツール一式)を保存する。

mise.tomlにツールを1つだけ書いたリポジトリで初めてワークフローを実行すると、キャッシュが見つからずツールをダウンロードした後、キャッシュとして保存される。

Restoring mise cache
mise cache not found for mise-v1-linux-x64-ubuntu24-975071a93ad0ad78fb3e7c9b0d731a4c53c1fe64d29072051caea5fd11f13683

Running mise install
mise jq@1.7.1        [1/2] install
(中略)
mise jq@1.7.1      ✓ installed

Saving mise cache
Cache saved from /home/runner/.local/share/mise with key: mise-v1-linux-x64-ubuntu24-975071a93ad0ad78fb3e7c9b0d731a4c53c1fe64d29072051caea5fd11f13683

同じmise.tomlのまま2回目のワークフローを実行すると、保存したキャッシュがヒットし、ダウンロードなしでツールが使える状態になる。

Restoring mise cache
Cache hit for: mise-v1-linux-x64-ubuntu24-975071a93ad0ad78fb3e7c9b0d731a4c53c1fe64d29072051caea5fd11f13683
Cache restored successfully
mise cache restored from key: mise-v1-linux-x64-ubuntu24-975071a93ad0ad78fb3e7c9b0d731a4c53c1fe64d29072051caea5fd11f13683

Running mise install
mise all tools are installed

mise installmise all tools are installedとだけ表示してすぐに終わっており、1回目のようなダウンロードが発生していないことが分かる。

キャッシュキーの既定値

デフォルトのキャッシュキーはcache_key_prefix(既定値mise-v1)・実行環境のプラットフォーム・mise.tomlなど設定ファイルの内容のハッシュを組み合わせて作られる。mise.tomlの内容を変更すると、この既定のキャッシュキーも変わるため、古いツール構成のキャッシュを誤って使い続けることはない。

cache_key_prefixでキャッシュを無効化する

mise.tomlを変更していなくても、何らかの理由でキャッシュを作り直したい場合はcache_key_prefixを変更する。

- uses: jdx/mise-action@v4
  with:
    cache_key_prefix: "mise-v2"

プレフィックスを変えるだけで別のキャッシュキーとして扱われ、次回の実行では新しくキャッシュが作成される。

cache_keyでキャッシュキー全体をカスタマイズする

cache_keyを指定すると、キャッシュキーの生成方法を完全に置き換えられる。{{platform}}{{file_hash}}のようなテンプレート変数を使ってキーを組み立てられる。

- uses: jdx/mise-action@v4
  with:
    cache_key: "mise-{{platform}}-{{install_args_hash}}-{{file_hash}}"

デフォルトのキーをベースに独自のサフィックスを加えたい場合は、{{default}}変数を使う。

- uses: jdx/mise-action@v4
  with:
    cache_key: "{{default}}-custom-suffix"