Xcode 构建洞察
Xcode 构建洞察 {#xcode-build-insights}
Section titled “Xcode 构建洞察 {#xcode-build-insights}”::: warning 要求
- 一个
Tuist 账户和项目 - Tuist CLI 4.138.1 或更高版本
- 一个 Xcode 项目
:::
在大项目上工作不应该需要反复重建相同的代码。Tuist Build Insights 让你可以跟踪构建分析,以便在本地和 CI 构建时间成为瓶颈之前识别趋势。
构建洞察由 tuist inspect build 命令驱动,通常添加到你的 scheme 的 post-action 中。
要开始跟踪本地构建时间,你可以将 tuist inspect build 命令添加到你的 scheme 的 post-action 中:

::: info
将 “Provide build settings from” 字段设置为主可执行文件或你的主要构建目标,以捕获构建配置。
:::
::: info
如果你没有使用
:::
在这种情况下,你可以通过在相关的
project.pbxprojBuildAction中设置runPostActionsOnFailure为YES来执行它:<BuildActionbuildImplicitDependencies="YES"parallelizeBuildables="YES"runPostActionsOnFailure="YES">
对于 Mise,在 post-action 环境中激活 tuist:
# -C 确保 Mise 从项目根目录的 Mise 配置文件加载配置$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build::: tip MISE 和项目路径
你的环境的 PATH 不会被 scheme post action 继承,因此请使用 Mise 的绝对路径。这取决于你如何安装 Mise。构建设置应该从目标继承,这样 mise 可以从 $SRCROOT 运行。
:::
登录后,本地构建将被跟踪,并可从 Tuist 仪表板访问:
::: tip
要快速访问仪表板,请从 CLI 运行 tuist project show --web。
:::

生成的项目 {#generated-projects}
Section titled “生成的项目 {#generated-projects}”::: info
自动生成的 scheme 会自动包含 tuist inspect build post-action。
:::
如果你不想在生成的方案中跟踪构建洞察,可以使用 buildInsightsDisabled 禁用它。
如果你使用带有自定义 scheme 的生成项目,请添加 post-action:
let project = Project( name: "MyProject", targets: [ // Your targets ], schemes: [ .scheme( name: "MyApp", shared: true, buildAction: .buildAction( targets: ["MyApp"], postActions: [ .executionAction( title: "Inspect Build", scriptText: """ $HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build """, target: "MyApp" ) ], runPostActionsOnFailure: true ), runAction: .runAction(configuration: "Debug") ) ])如果你没有使用 Mise,简化为:
buildAction: .buildAction( targets: ["MyApp"], postActions: [ .executionAction( title: "Inspect Build", scriptText: "tuist inspect build", target: "MyApp" ) ], runPostActionsOnFailure: true)CI 中的构建洞察 {#continuous-integration}
Section titled “CI 中的构建洞察 {#continuous-integration}”要跟踪 CI 上的构建洞察,请确保 CI 已通过
对于 Xcodebuild 驱动的 CI,你需要:
- 在调用
xcodebuild操作时使用 。tuist xcodebuild - 在你的
xcodebuild命令中添加-resultBundlePath。
没有 -resultBundlePath,将不会生成所需的 activity logs 和 result bundles,tuist inspect build 无法分析构建。
机器指标 {#machine-metrics}
Section titled “机器指标 {#machine-metrics}”构建洞察可以包含构建期间捕获的机器级性能指标(CPU、内存、网络和磁盘使用情况)。要启用此功能,请设置一个轻量级后台守护进程来持续采样系统指标:
tuist setup insights这会在后台运行一个守护进程来采样指标。数据会自动被 tuist inspect build 拾取,并与构建报告一起上传。
::: tip CI
在构建之前,在你的 CI 机器上运行 tuist setup insights 以便也在那里捕获机器指标。
:::
自定义元数据 {#custom-metadata}
Section titled “自定义元数据 {#custom-metadata}”你可以使用环境变量将元数据附加到构建上以改进过滤。
| 变量 | 格式 | 描述 |
|---|---|---|
TUIST_BUILD_TAGS | 逗号分隔 | 一个变量中的多个标签。 |
TUIST_BUILD_VALUE_* | 单个值 | 键值对,其中后缀是键。 |
在调用构建之前在 CI 或 shell 中设置这些值:
export TUIST_BUILD_TAGS="nightly,ios-team,release-candidate"export TUIST_BUILD_VALUE_TICKET="PROJ-1234"export TUIST_BUILD_VALUE_PR_URL="https://github.com/myorg/myrepo/pull/123"