インストールログが並列に混ざって読みにくい

【mise】mise installで設定ファイルに書いたツールをインストールする で紹介したmise installは、mise.tomlに複数のツールが書かれている場合、既定で複数のツールを並行してインストールする。速度面では有利だが、複数のツールのダウンロード・インストールログが入り交じって、どのツールでエラーが起きたか分かりにくくなる場合がある。環境変数MISE_JOBSを設定すると、同時に実行するインストール処理の数を変更できる。

既定では8並列で実行される

mise.tomlに複数のツールを書いた状態でmise installを実行すると、既定で最大8個まで並列にインストールが進む。

[tools]
lazygit = "latest"
delta = "latest"
bat = "latest"
fd = "latest"
$ mise install
mise delta@0.19.2    [1/3] install
mise bat@0.26.1      [1/3] install
mise lazygit@0.64.1  [1/3] install
mise fd@10.5.0       [1/3] install
mise fd@10.5.0       [1/3] download fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise delta@0.19.2    [1/3] download delta-0.19.2-aarch64-apple-darwin.tar.gz
mise bat@0.26.1      [1/3] download bat-v0.26.1-aarch64-apple-darwin.tar.gz
mise lazygit@0.64.1  [1/3] download lazygit_0.64.1_darwin_arm64.tar.gz
mise fd@10.5.0       [2/3] checksum fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0       [3/3] extract fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0     ✓ installed
mise delta@0.19.2    [2/3] checksum delta-0.19.2-aarch64-apple-darwin.tar.gz
mise delta@0.19.2    [3/3] extract delta-0.19.2-aarch64-apple-darwin.tar.gz
mise bat@0.26.1      [2/3] checksum bat-v0.26.1-aarch64-apple-darwin.tar.gz
mise bat@0.26.1      [3/3] extract bat-v0.26.1-aarch64-apple-darwin.tar.gz
mise delta@0.19.2  ✓ installed
mise lazygit@0.64.1  [2/3] checksum lazygit_0.64.1_darwin_arm64.tar.gz
mise lazygit@0.64.1  [3/3] extract lazygit_0.64.1_darwin_arm64.tar.gz
mise bat@0.26.1    ✓ installed
mise lazygit@0.64.1 ✓ installed

4つのツールの[1/3] install[1/3] downloadが入り交じって表示され、どのツールがどこまで進んでいるか目で追いにくい。

MISE_JOBS=1で直列インストールする

同じmise.tomlMISE_JOBS=1でインストールすると、1つのツールが完了してから次のツールに進む。

$ export MISE_JOBS=1
$ mise install
mise lazygit@0.64.1  [1/3] install
mise lazygit@0.64.1  [1/3] download lazygit_0.64.1_darwin_arm64.tar.gz
mise lazygit@0.64.1  [2/3] checksum lazygit_0.64.1_darwin_arm64.tar.gz
mise lazygit@0.64.1  [3/3] extract lazygit_0.64.1_darwin_arm64.tar.gz
mise lazygit@0.64.1 ✓ installed
mise delta@0.19.2    [1/3] install
mise delta@0.19.2    [1/3] download delta-0.19.2-aarch64-apple-darwin.tar.gz
mise delta@0.19.2    [2/3] checksum delta-0.19.2-aarch64-apple-darwin.tar.gz
mise delta@0.19.2    [3/3] extract delta-0.19.2-aarch64-apple-darwin.tar.gz
mise delta@0.19.2  ✓ installed
mise bat@0.26.1      [1/3] install
mise bat@0.26.1      [1/3] download bat-v0.26.1-aarch64-apple-darwin.tar.gz
mise bat@0.26.1      [2/3] checksum bat-v0.26.1-aarch64-apple-darwin.tar.gz
mise bat@0.26.1      [3/3] extract bat-v0.26.1-aarch64-apple-darwin.tar.gz
mise bat@0.26.1    ✓ installed
mise fd@10.5.0       [1/3] install
mise fd@10.5.0       [1/3] download fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0       [2/3] checksum fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0       [3/3] extract fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0     ✓ installed

ログがツールごとにまとまって出力されるため、エラーが起きたときにどのツールの処理かが一目で分かる。並列度を下げた分だけ、全体の完了までの時間は伸びる傾向にある。

0以下を指定しても1として扱われる

MISE_JOBSに0以下の値を指定してもエラーにはならず、1を指定したときと同じ直列実行になる。

$ MISE_JOBS=0 mise install
mise fd@10.5.0       [1/3] install
mise fd@10.5.0       [1/3] download fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0       [2/3] checksum fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0       [3/3] extract fd-v10.5.0-aarch64-apple-darwin.tar.gz
mise fd@10.5.0     ✓ installed

こんな場面で使う

CI環境でネットワーク帯域やリソースに制約がある場合、並列数を下げると安定してインストールできることがある。逆に高速なネットワークとマシンリソースが十分にある環境では、既定の8より大きい値を指定して、さらに並列度を上げることもできる。--jobsフラグでも同じ値を指定でき、環境変数はシェルの起動ファイルやCIの設定に、フラグはその場限りの実行に使い分けるとよい。