モノレポのサブディレクトリにあるmise.tomlを読み込みたい
jdx/mise-actionは既定でリポジトリのルートディレクトリでmise installを実行する。モノレポ構成でmise.tomlがサブディレクトリにある場合、ルートディレクトリにはmise.tomlが存在しないため、そのままでは目的のツールがインストールされない。working_directory入力を使うと、mise-actionがmise installなどを実行するディレクトリを指定できる。
working_directoryでmise.tomlのあるディレクトリを指定する
backend/mise.tomlにツールを定義する。
[tools]
jq = "1.7.1"
working_directoryにbackendを指定すると、mise-actionはbackendディレクトリでmise installを実行する。後続のステップでmiseコマンドを使う場合も、GitHub Actions標準のworking-directoryキーで同じディレクトリを指定する。
- uses: actions/checkout@v4
- uses: jdx/mise-action@v4
with:
working_directory: backend
- run: mise ls
working-directory: backend
ログを確認すると、backend/mise.tomlに定義したjqがインストールされている。
jq 1.7.1 ~/work/test/test/backend/mise.toml 1.7.1
working_directoryを指定しない場合の挙動
比較として、working_directoryを指定せず、後続のステップのworking-directoryだけをbackendにした場合を確認する。
- uses: actions/checkout@v4
- uses: jdx/mise-action@v4
- run: mise ls
working-directory: backend
mise-actionはルートディレクトリでmise installを実行するため、ルートにmise.tomlが存在せず、jqはインストールされない。後続のmise lsはworking-directory: backendの指定によってbackend/mise.tomlを見つけるが、インストール自体は行われていないためmissingと表示される。
jq 1.7.1 (missing) ~/work/test/test/backend/mise.toml 1.7.1
mise-actionのステップ自体にworking_directoryを渡さないと、後続ステップ側でディレクトリを合わせるだけでは不十分である。モノレポでサブディレクトリのmise.tomlを使う場合は、mise-actionのステップにも必ずworking_directoryを指定する。
