跳转到内容

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 中:

Post-action for inspecting builds

::: info

将 “Provide build settings from” 字段设置为主可执行文件或你的主要构建目标,以捕获构建配置。

:::

::: info

如果你没有使用 生成的项目,则在构建失败时不会执行 post-scheme action。

:::

在这种情况下,你可以通过在相关的 project.pbxproj BuildAction 中设置 runPostActionsOnFailureYES 来执行它:

<BuildAction
buildImplicitDependencies="YES"
parallelizeBuildables="YES"
runPostActionsOnFailure="YES">

对于 Mise,在 post-action 环境中激活 tuist

Terminal window
# -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

:::

Dashboard with build insights

::: 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 无法分析构建。

构建洞察可以包含构建期间捕获的机器级性能指标(CPU、内存、网络和磁盘使用情况)。要启用此功能,请设置一个轻量级后台守护进程来持续采样系统指标:

Terminal window
tuist setup insights

这会在后台运行一个守护进程来采样指标。数据会自动被 tuist inspect build 拾取,并与构建报告一起上传。

::: tip CI

在构建之前,在你的 CI 机器上运行 tuist setup insights 以便也在那里捕获机器指标。

:::

你可以使用环境变量将元数据附加到构建上以改进过滤。

变量格式描述
TUIST_BUILD_TAGS逗号分隔一个变量中的多个标签。
TUIST_BUILD_VALUE_*单个值键值对,其中后缀是键。

在调用构建之前在 CI 或 shell 中设置这些值:

Terminal window
export TUIST_BUILD_TAGS="nightly,ios-team,release-candidate"
Terminal window
export TUIST_BUILD_VALUE_TICKET="PROJ-1234"
export TUIST_BUILD_VALUE_PR_URL="https://github.com/myorg/myrepo/pull/123"