コンテンツへスキップ

Rust ビルドインサイト

Build Insights は、Cargo ビルドのボトルネックを特定し、チーム全体に影響が出る前に回帰を検出するのに役立ちます。ローカルビルドと CI を比較してビルド時間の変化を確認したり、各ビルドでコンパイルされたクレートを確認できます。

Requirements

ビルドを報告する#

Tuist を介して通常の Cargo コマンドを実行します。

bash
tuist cargo build --workspace
tuist cargo check --all-targets
tuist cargo +nightly build --features tracing

mise を使用している場合は、通常の cargo コマンドを引き続き使用できるように Cargo のラッパーを設定してください。引数、ツールチェーンの選択、出力、終了コードは同じままです。

ビルドの遅延要因を見つける#

ダッシュボードの Builds → Build Runs からビルドを開きます。日付、環境、Rust バージョンのフィルターを使用して類似のビルドを比較します。ビルドとそのキャッシュカウンターは、tuist build cargo list および tuist build cargo show、GET /api/projects/{account_handle}/{project_handle}/cargo/builds、そして list_cargo_builds と get_cargo_build の MCP ツール からも利用できます。

概要 で、コンパイラジョブ を使用して低速なクレートを見つけます。期間 または 開始後(Cargo コマンド開始からの時間)で並べ替えるか、クレート名またはルートソースファイルで検索します。

各行はクレートに対する 1 つの rustc 呼び出しを表しており、複数のソースファイルを含むことができます。クレートルート はそのルートソースファイルを識別します。期間はファイル単独ではなく、コンパイラジョブ全体に対するものです。クレートは異なるターゲットや設定に応じて複数回表示される場合があります。コンパイラのメッセージは 警告 と エラー にグループ化されます。

ビルド間でクレートを追跡する#

段階的なクレート履歴ロールアウトに参加しているプロジェクトでは、Builds → Crates に観測されたクレートとそのコンパイル履歴が表示されます。クレートを開いて、ビルド間で記録された期間と結果を比較し、コンパイルをその Cargo ビルドにさかのぼって確認できます。同じ一覧は、プロジェクト API の /cargo/crates および kind: cargo_crates を持つ共有 MCP ビルドエンティティツールからも利用できます。

クレートは、記録された正確なルートパス、名前、種類によってグループ化されます。チェックアウトパスを変更すると履歴が分断される可能性があります。プロファイル、フィーチャー、ターゲットトリプルは区別されません。これは観測されたコンパイラジョブの一覧であり、ワークスペース内のすべてのクレートではありません。キャッシュ済みまたは最新のクレートはコンパイルサンプルを作成しません。

ビルドレポートの属性付け#

認証されたレポートは、個人用認証情報の背後にいる個人を識別します。共有認証情報は個人を識別する必要はありません。オプションで、レポート送信マシン上の安定した不透明な識別子として TUIST_ACTOR_ID を設定できます。これはデフォルトで無効になっており、未検証の主張として表示され、承認には使用されません。古いサーバーはこの主張を無視する場合があります。秘密情報を含めないでください。

タイミングを読み解く#

ビルド期間は、Cargo コマンド全体にかかった時間です。コンパイラジョブは並列で実行できるため、それらの期間の合計はビルド期間と一致しません。

Cargo は再ビルドが必要なクレートのみをコンパイルします。すでに最新のクレートはコンパイラリストに表示されません。Tuist のコンパイルキャッシュを使用する場合、復元されたジョブはコンパイラの実行としてではなく、キャッシュ測定値に表示されます。

Tuist はビルドスクリプトを個別に測定せず、ビルドタイムラインも表示しません。大規模なビルドでは最初の 500 件のコンパイラジョブが表示され、さらに記録された場合は通知が表示されます。

キャッシュ測定値を読み解く#

tuist cargo には、Tuist CLI に実装された実験的なコンパイルキャッシュが含まれています。セットアップ、Kura を介したリモート読み書き、サポートされているコンパイル、トラブルシューティングについては、Rust キャッシュガイドに従ってください。

プロジェクトサイドバーの Cargo Cache を開いて、ビルド間のキャッシュヒット率および記録された転送、レイテンシ、スループットの測定値を追跡します。日付または環境でフィルターをかけ、日次トレンドと個別ビルドのヒット率を切り替えたり、最近のビルドを開いてそのキャッシュアクティビティを確認したりできます。キャッシュ測定値のないビルドはゼロとしてカウントされるのではなく、利用不可のままとなります。

ビルドの Cache タブを開いて、タスクヒット、タスクミス、ヒット率、ダウンロードおよびアップロードされたバイト数を確認します。このタブは、ビルドがキャッシュデータを報告する場合に表示されます。

  • キャッシュ可能なタスク は、どのコンパイラおよびビルドスクリプトタスクがキャッシュされた出力を再利用したかを示します。タスクを検索またはフィルターし、キャッシュの読み取り/書き込みレイテンシを確認し、行を展開してその出力を表示します。
  • CAS Outputs はアーティファクトのダウンロードとアップロードを、そのサイズ、期間、スループットとともに示します。チャートは完了した転送をカウントします。既に存在するアーティファクトと失敗した試行はテーブルに残ります。

Hit はキャッシュされた出力が再利用されたことを意味します。Missed はタスクが代わりにコンパイルされたことを意味します。ヒットはローカルとリモートに分割されません。CAS Outputs は記録されたアーティファクト操作を示します。

詳細な記録が欠落しているか不完全な場合、ページに通知が表示されます。サマリーは依然としてビルド全体をカバーします。回避された推定コンパイラ作業は 経過したビルド時間の節約ではありません。

Experimental compilation cache

キャッシュは実験的であり、Apple silicon Mac で検証されています。ライブラリはコンパイラが読み取ったソースによってキャッシュされます。ビルドスクリプト、手続き型マクロ、実行可能ファイル、ネイティブコードは Apple silicon Mac でのみキャッシュされます。キャッシュキーはチェックアウトパスとツールチェーンパスをプレースホルダーに置き換えるため、同じマシン上の別のパスでのチェックアウトでもそれらを再利用できます。増分コンパイルは通常どおりビルドされます。

テストを実行するビルド#

tuist cargo test は、テストを含むコマンド全体の期間を報告します。また、Rust テストインサイト を介して、doctest を含む個々のテスト結果も報告します。個々のテスト結果は Tests の下に表示され、コマンドの期間はビルドインサイトに表示されます。

その他のコンパイラツール#

Tuist は、RUSTC_WRAPPER、CARGO_BUILD_RUSTC_WRAPPER、または Cargo 構成を通じて構成された既存のコンパイララッパーを保持し、RUSTC_WORKSPACE_WRAPPER をそのまま残します。事前に存在するグローバルラッパーは、Tuist のキャッシュとコンパイラオブザーバーを無効にします。Tuist はそのラッパーが実際に rustc を実行したかどうかを確認できません。カスタムワークスペースラッパーも同様に、レポートに含まれるコンパイラジョブが少なくなる可能性があります。

Tuist は rustup を介して Cargo を検出します。カスタムインストールを使用している場合は、TUIST_CARGO_EXECUTABLE をその実行可能ファイルのパスに設定してください。直接ツールチェーンパスで Cargo を呼び出すと、mise のラッパーがバイパスされます。Cargo エイリアスは build などの組み込みコマンドを置き換えることはできません。

Cargo のナイトリー -C オプションを使用する場合は、代わりにまずワークスペースに移動してください。Tuist は -C コマンドを転送しますが、そのビルドタイミングは収集しません。

トラブルシューティング#

ビルドがダッシュボードに表示されない場合は、デバッグ出力を有効にしてレポートが送信されなかった理由を確認してください。

bash
TUIST_DEBUG=1 tuist cargo build --workspace

レポート機能はビルドの結果を変更しません。