CIでもmise.tomlに定義したタスクをそのまま使いたい

【mise】mise runでタスクを定義して実行する で紹介したmise runは、ローカルでもCIでも同じmise.tomlのタスク定義をそのまま実行できる。jdx/mise-actionでセットアップした後にmise runを実行するだけで、ビルドやテストといったタスクをGitHub Actions上でも実行できる。

mise.tomlにタスクを定義する

mise.tomlにタスクを定義しておく。

greetタスクの中で、mise.tomlに書いたjqをそのまま使う。

[tools]
jq = "1.7.1"

[tasks.greet]
run = "echo '{\"name\": \"mise\"}' | jq .name"

mise-actionの後にmise runを実行する

jdx/mise-actionでmiseとツールをセットアップした後、通常のrunステップでmise runを実行する。

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

mise-actionが引き継いだPATH経由でmiseコマンドと、セットアップ済みのjqがそのまま使えるため、追加の設定なしにmise runでタスクを実行できる。

Run mise run greet
mise run greet
[greet] $ echo '{"name": "mise"}' | jq .name
"mise"

buildtestのようなタスクも同じ仕組みで動かせる。ローカルではmise run build、CIではmise-actionのセットアップ後にmise run buildを呼ぶだけで済むため、シェルスクリプトをCI設定ファイルに直接書かず、mise.tomlのタスクとして一元管理できる。