Jestの並列実行オプション
Jestのv28から分割して実行できるオプションが追加された
--shard 1/3
といった形式で実行できる
3分割する場合
--shard 1/3
--shard 2/3
--shard 3/3
というように3つコマンドを実行するとそれぞれで3分割したうちの1つ目、2つ目、3つ目というように実行ファイルを分割してくれる
これを使ってテストの実行時間を短縮しましょうという感じ
GitLab-CIで並列実行する
GitLab-CIで並列実行をする場合はparallel
を使用する(GitLab 11.5から)
parallelを使用するとジョブごとに、環境変数CI_NODE_TOTAL
とCI_NODE_INDEX
が設定される
- 実際の設定
test: stage: test image: node:16 parallel: 5 script: - yarn install - yarn jest --shard ${CI_NODE_INDEX}/${CI_NODE_TOTAL}
GitLab CI/CD パイプライン設定リファレンス | GitLab
なので今回の設定だとshard
の値は次のようになりそれぞれJobが実行される
yarn jest --shard 1/5
yarn jest --shard 2/5
yarn jest --shard 3/5
yarn jest --shard 4/5
yarn jest --shard 5/5
custom sequencer
このshard
メソッドをゴニョゴニョすることでテストファイルの並びをコントロールできるよう
時間のかかるテストとそうじゃないテストをうまく組み合わせて並列で実行しているテストの時間をなるべく均一するとかもできそうな気がしている
まぁそこまでやるか?という話もあるが…