GitHub Actionsのワークフローでmise.tomlに書いたツールを使いたい

ローカルではmise installを実行すればよいが、GitHub Actionsのワークフロー上でも同じようにmise.tomlに書いたツールをセットアップしたい。jdx/mise-action を使うと、ワークフロー上にmiseをインストールし、リポジトリのmise.tomlに書かれたツールをそのまま使えるようになる。

mise-actionの基本

actions/checkoutの後にjdx/mise-actionを置くだけで、オプションなしでも動く。

- uses: actions/checkout@v4
- uses: jdx/mise-action@v4
- run: jq --version

リポジトリ直下に以下のようなmise.tomlがある場合を試す。

[tools]
jq = "1.7.1"

jdx/mise-actionは、mise本体のインストールからmise installの実行、後続のステップへの環境変数・PATHの引き継ぎまでを自動でこなす。

Running mise install
mise jq@1.7.1        [1/2] install
mise jq@1.7.1        [1/2] download jq-linux-amd64
mise jq@1.7.1        [2/2] checksum jq-linux-amd64
mise jq@1.7.1        [2/2] extract jq-linux-amd64
mise jq@1.7.1      ✓ installed

Running mise ls
jq  1.7.1  ~/work/test/test/mise.toml  1.7.1

続くrun: jq --versionのステップは、mise-actionが引き継いだPATH経由でmise.tomlに書いたjqを実行する。

Run jq --version
jq-1.7.1

デフォルトで有効になっている挙動

jdx/mise-actionはオプションを何も指定しなくても、次の挙動がデフォルトで有効になっている。

  • mise本体の最新版をダウンロードしてインストールする
  • リポジトリ直下のmise.toml(または.tool-versions)を読み込み、mise installを実行する
  • インストールしたツールを~/.local/share/miseにGitHubのキャッシュとして保存し、次回以降のワークフロー実行を高速化する
  • miseが設定する環境変数とPATHを、以降のステップへ引き継ぐ

上記のデフォルト挙動は入力オプションで個別に変更できるが、mise.tomlに書いたツールをそのままCIで使いたいだけであれば、jdx/mise-actionを置くだけで完結する。