ワークフローを実行するたびにツールのダウンロードで時間がかかる
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 installがmise 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"
