リポジトリ
ドキュメント
コアコンセプト
CIでのタスクのスキップ

タスクのスキップ

ビルドキャッシュはタスクを大幅に高速化できますが、npx turbo-ignoreを使用することで、さらに改善できます。ワークスペースがコードの変更の影響を受けていない場合、タスクの実行を完全にスキップできます。

webアプリケーション(またはそのパッケージの依存関係)に変更がない場合、webワークスペースの単体テストをスキップしたいとします。すでにリモートキャッシュ (新しいタブで開きます)を使用している場合、おそらくキャッシュヒットするでしょうが、CIコンテナのプロビジョニング、npmの依存関係のインストールなど、時間がかかる可能性のある処理に時間を費やすことになります。

理想的には、まず最初にそれらの作業を行う必要があるかどうかを簡単に確認します。

リポジトリをチェックアウトした後、他の作業を始める**前に**、親コミット以降にwebテストが変更されたかどうかを確認するのに数秒かかる場合があります。

npx turbo-ignore web --task=test

このコマンドは、次のことを行います。

  1. webワークスペースをフィルタリングします。
  2. 親コミットと比較して、testタスクのdry出力を生成します。
  3. 出力を解析して、どのパッケージが変更されたかを判断します。
  4. 変更が検出された場合は、1コードで終了します。それ以外の場合は、0で終了します。

このタスクで>>> FULL TURBOキャッシュをヒットさせることができたかもしれませんが、CIを実行するために必要な他のセットアップタスクの時間を節約できました。

turbo-ignoreの使用

影響を受けない作業をスキップするには、まず、git履歴がマシンで利用可能であることを確認してください。次に、npx turbo-ignoreを実行します。

turbo-ignore は、--filter フラグと --dry=json フラグを組み合わせて、親コミットから現在のコミットへの変更を検出し、影響を受けるパッケージを特定します。デフォルトでは、turbo-ignore現在の作業ディレクトリでのビルドタスクの差分を検出しますが、フラグを使用してこの動作をカスタマイズすることができます。

以下は、構築および実行されるコマンドの例です。

npx turbo run build --filter=@example/web...3c8387ffd98b751305fe3f0284befdd00cbd4610 --dry=json

ドライランはビルドタスクを実行しないことに注意してください。代わりに、コード変更がビルド(または他のタスク)に影響を与えるかどうかをわずか数秒でパッケージをチェックします。

turbo-ignore がタスクをスキップできると判断した場合、プロセスは 0 のコードで終了します。変更が見つかった場合は、プロセスは 1 で終了します。

Vercelでは、親コミットの代わりに以前にデプロイされたSHAが使用されます。

動作のカスタマイズ

ワークスペースを指定するには、次のようにコマンドに追加できます。

npx turbo-ignore web

ここで、web は、デフォルトの build タスクを実行するワークスペースの名前です。

タスクを変更したい場合は、--task フラグを使用して、turbo-ignore が呼び出すコマンドのタスクを指定します。

Vercelでの turbo-ignore の使用

Vercelでnpx turbo-ignoreを使用するには、無視されたビルドステップ (新しいタブで開きます)機能を使用できます。Vercelは、turbo-ignore を正常に実行するための正しい引数を自動的に推測します。

動作のカスタマイズ

Vercelでは、デフォルトの比較が利用できない場合に比較対象となるGit参照をVercelに提供するために、--fallback フラグを指定できます。デフォルトでは、Vercelは最後にデプロイされたSHAと比較するため、これはブランチへの最初のコミットでデプロイを回避するなどのユースケースに役立ちます。