跳转到内容

Xcode 构建洞察

在大项目上工作不应该需要反复重建相同的代码。Tuist Build Insights 让你可以跟踪构建分析,以便在本地和 CI 构建时间成为瓶颈之前识别趋势。

构建洞察由 tuist inspect build 命令驱动,通常添加到你的 scheme 的 post-action 中。

要开始跟踪本地构建时间,你可以将 tuist inspect build 命令添加到你的 scheme 的 post-action 中:

Post-action for inspecting builds

在这种情况下,你可以通过在相关的 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

登录后,本地构建将被跟踪,并可从 Tuist 仪表板访问:

Dashboard with build insights

如果你不想在生成的方案中跟踪构建洞察,可以使用 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 上的构建洞察,请确保 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 拾取,并与构建报告一起上传。

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

变量格式描述
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"