コンテンツへスキップ

Gradle ビルドインサイト

Tuist の Gradle プラグインはビルド分析を Tuist に送信し、タスクの実行状況とビルドパフォーマンスを可視化します。

アップロード動作の設定#

デフォルトでは:

  • ローカルビルドの場合、ビルド分析はバックグラウンドでアップロードされます。
  • CI 実行の場合、短命なエージェントでのテレメトリ損失を防ぐため、ビルド分析はフォアグラウンドでアップロードされます。

tuist 拡張機能内の uploadInBackground を使用して、この動作を制御できます:

kotlin
tuist {
uploadInBackground = false // always upload in the foreground
}

設定リファレンス#

uploadInBackground オプションは、settings.gradle.kts 内の tuist 拡張ブロックで利用できます:

オプション型デフォルト説明
uploadInBackgroundBoolean?null (ローカルではバックグラウンド、CI ではフォアグラウンド)ローカルビルドのビルドインサイトをバックグラウンドでアップロードするかどうか。

この設定は、buildCache ブロック内のリモートキャッシュ設定には影響しません。

レポートアクタークレーム#

ビルドおよびテストレポートのリクエストには、TUIST_ACTOR_ID を組織スコープのラベルに明示的に設定するか、設定で buildInsights.actorId を構成した場合のみ、オプションの x-tuist-actor-id ヘッダーが含まれます。デフォルトではラベルは送信されず、プラグインはオペレーティングシステムのユーザー名を検出しません。環境変数による上書きが優先されます。報告される識別子を省略するには、いずれかの上書きを空の文字列に設定してください。これにより、個別の認証情報によって確立された識別子が削除されるわけではありません。無効な上書きの場合、フォールバックせずクレームが省略されます。カスタムプロキシが不明なヘッダーを拒否する場合は、TUIST_ACTOR_ID="" でオプトアウトしてください。

kotlin
tuist {
buildInsights {
actorId = providers.environmentVariable("CORPORATE_ACTOR_ID").getOrElse("")
}
}

アクター識別子は、スペースを除く印刷可能な ASCII 文字で 1〜128 バイトです。プロジェクトのレポートを表示できるすべての人 (プロジェクトが公開されている場合は公開ビューアーを含む) に表示され、レポートとともにエクスポートされます。公開したくない機密情報や個人情報は含めないでください。ダッシュボードでは検証済みの個別認証情報が優先され、クライアントから送信された識別子はそれ以外の場合、明示的に 未検証 として扱われます。これらは権限を付与したり、Tuist ユーザーに自動的にリンクしたりすることはありません。古いサーバーは属性ヘッダーを無視し、新しいサーバーはそれなしでも古いクライアントを受け入れ続けます。識別子のない新しい共有トークンレポートは、公開組織ではなく 不明 と表示され、過去のレポートは以前の属性を保持します。ビルドおよびテストの一覧では、検証済みユーザーフィルターと未検証の報告識別子フィルターが区別されています。

ネットワーク信頼型パブリッシング#

セルフホスト型のデプロイメントでは、開発者の認証情報なしで、信頼されたネットワークからの Gradle ビルドおよびテストレポートを明示的に許可できます。オペレーターはまずインスタンスで TUIST_NETWORK_TRUSTED_INSIGHTS_ACCESS=true を構成し、再起動する必要があります。これはサポートされているすべてのプロジェクトに適用され、ダッシュボードの設定項目はありません。セルフホスティングガイドをご覧ください。

リポジトリで宛先を一度設定します:

kotlin
tuist {
project = "organization/project"
url = "https://tuist.internal.example"
buildCache { enabled = false }
}

ビルドおよびテストのレポートには、認証済みキャッシュエンドポイントの検出は必要ありません。インスタンスが別にネットワーク信頼型キャッシュアクセスを有効にしている場合、または開発者がトークンをプロビジョニングしている場合を除き、キャッシュは無効にしてください。署名されていないテストレポートはシャードと既存ビルドへの参照を省略し、隔離や不安定性の自動化をトリガーしません。認証情報が実際に存在しない場合、隔離ルックアップはスキップされます。有効な認証情報がある場合、既存の認証済み動作が維持されます。認証情報が存在する場合、それらが使用され、無効な認証情報は資格情報なしのパブリッシングにフォールバックするのではなく失敗します。認証情報がない場合、プラグインはセルフホスト型サーバーが資格情報なしのレポートを許可するかどうかを自動的に検出します。クライアントフラグや buildInsights 設定は必要ありません。資格情報なしのクライアントをアップグレードする前に、すべてのサーバーレプリカを検出対応バージョンにアップグレードしてください。検出機能のない古いサーバー、無効化されたインスタンス、および検出エラーが発生した場合は引き続き認証が必要であり、認証済みパブリッシングとの互換性は維持されます。明示的に空の TUIST_TOKEN は、資格情報なしのパブリケーションを有効にするのではなく、安全側に倒れて失敗します。シークレットのないフォークまたは Dependabot ジョブの場合は、その変数を空の文字列として定義するのではなく、削除してください。

サーバーは資格情報なしのレポート ID を割り当てます。送信を繰り返すと 2 つ目のレポートが作成される可能性があります。このモードは冪等な再試行や認証済みテストレポートとの相関を保証するものではありません。このようなレポートは VCS コメントや自動的な失敗エージェントイベントをトリガーできません。ネットワークアクセスはパブリッシングの信頼境界であり、報告されたアクターの身元の証明ではありません。

カスタムメタデータ#

Gradle ビルドにタグとキーバリューデータを付加し、異なるチーム、ハードウェア、またはワークフローからの実行を比較できます。タグはダッシュボードのフィルターとして利用でき、値は各ビルドの詳細ページ、アプリケーションプログラミングインターフェース、および Model Context Protocol ツールに表示されます。

環境変数でメタデータを設定します:

bash
export TUIST_BUILD_TAGS="nightly,android"
export TUIST_BUILD_VALUE_TICKET="TUIST-123"
export TUIST_BUILD_VALUE_RUNNER="macos-14"

settings.gradle.kts でメタデータを構成することもできます:

kotlin
tuist {
buildInsights {
tag("nightly")
tag("android")
value("ticket", "TUIST-123")
value("runner", "macos-14")
}
}

同じ値が両方の場所で構成されている場合、settings.gradle.kts の値が優先されます。

タグには文字、数字、ハイフン、アンダースコアのみを使用できます。ビルドには最大 50 個のタグを設定でき、各タグは最大 50 文字まで含めることができます。ビルドには最大 20 個のキーバリューエントリを設定でき、各キーは最大 50 文字、各値は最大 500 文字まで含めることができます。これらは Xcode ビルドメタデータに使用されるものと同じサーバー側の制限です。プラグインはレポートを送信する前に、無効なタグおよびサイズ超過または空のメタデータエントリをスキップするため、無効な構成によってビルドインサイトレポートの残部分が保存されなくなることはありません。タグの制約を満たさない値には、キーバリューメタデータを使用してください。

カスタムメタデータは、ダッシュボードおよびアプリケーションプログラミングインターフェース、Model Context Protocol ツールを通じてプロジェクトメンバーに表示されます。認証情報、アクセストークン、その他の機密データには使用しないでください。Tuist はこのメタデータを含む Gradle ビルドデータを 90 日間保持します。詳細については、データ保持ポリシーをご覧ください。