洞察力
警告要求
:::
在大型项目上工作不应该感觉是一件苦差事。事实上,它应该和两周前刚刚开始的项目一样令人愉快。但事实并非如此,原因之一是随着项目的增长,开发人员的体验会受到影响。构建时间增加,测试变得缓慢而不稳定。人们往往很容易忽视这些问题,直到它们变得难以忍受--然而,到了那个时候,就很难解决这些问题了。Tuist Insights 可为您提供各种工具来监控项目的健康状况,并在项目扩展过程中保持高效的开发人员环境。
换句话说,Tuist Insights 可以帮助您回答以下问题:
- 在过去一周中,建造时间是否有明显增加?
- 我的测试速度是否变慢了?哪些变慢了?
信息
Tuist Insights 处于早期开发阶段。
:::
构建
虽然您可能对 CI 工作流的性能有一定的衡量标准,但对本地开发环境的可视性可能不尽相同。然而,本地构建时间是影响开发人员体验的最重要因素之一。
要开始跟踪本地构建时间,可以利用tuist inspect build 命令,将其添加到方案的后期行动中:
。
信息
我们建议将 "提供构建设置 "设置为可执行文件或主要构建目标,以便 Tuist 跟踪构建配置。
:::
信息
如果不使用 生成的项目,则在构建失败的情况下不会执行方案后操作。
:::
即使在这种情况下,Xcode 中一个未注明的功能也允许您执行它。`` 在相关的
project.pbxproj文件中,将runPostActionsOnFailure属性设置为YES:diff<BuildAction buildImplicitDependencies="YES" parallelizeBuildables="YES" + runPostActionsOnFailure="YES">
如果您使用的是 Mise,您的脚本需要在行动后环境中激活tuist :
sh
# -C ensures that Mise loads the configuration from the Mise configuration
# file in the project's root directory.
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect buildMISE & PROJECT PATHS
方案后操作不会继承PATH 环境变量,因此必须使用 Mise 的绝对路径,这取决于安装 Mise 的方式。此外,不要忘记从项目中的目标中继承构建设置,以便从 $SRCROOT 指向的目录运行 Mise。
现在,只要您登录 Tuist 帐户,您的本地构建就会被跟踪。您现在可以在 Tuist 面板中访问您的构建时间,并查看它们随时间的变化情况:
TIP
要快速访问仪表板,请从 CLI 运行tuist project show --web 。
!!!!!!!!!
。
测试
除了跟踪构建,您还可以监控测试。测试洞察可帮助您识别缓慢的测试或快速了解失败的 CI 运行。
要开始跟踪测试,可以将tuist inspect test 命令添加到方案的测试后操作中,从而利用该命令:
检查测试后的行动](/images/guides/features/insights/inspect-test-scheme-post-action.png)。
如果您使用的是 Mise,您的脚本需要在行动后环境中激活tuist :
sh
# -C ensures that Mise loads the configuration from the Mise configuration
# file in the project's root directory.
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect testMISE & PROJECT PATHS
方案后操作不会继承PATH 环境变量,因此必须使用 Mise 的绝对路径,这取决于安装 Mise 的方式。此外,不要忘记从项目中的目标中继承构建设置,以便从 $SRCROOT 指向的目录运行 Mise。
现在,只要您登录 Tuist 帐户,您的测试运行就会被跟踪。您可以在 Tuist 面板中访问您的测试洞察,并查看它们如何随时间演变:
。
除了整体趋势,您还可以深入研究每个测试,例如在调试 CI 上的失败或缓慢测试时:
!
生成的项目
信息
自动生成的方案会自动包含tuist inspect build 和tuist inspect test 两项后置操作。
:::
如果对在自动生成的方案中跟踪洞察力不感兴趣,请使用
buildInsightsDisabled和
testInsightsDisabled生成选项禁用洞察力。
如果使用的是带有自定义方案的生成项目,则可以为构建和测试洞察设置后置操作:
swift
let project = Project(
name: "MyProject",
targets: [
// Your targets
],
schemes: [
.scheme(
name: "MyApp",
shared: true,
buildAction: .buildAction(
targets: ["MyApp"],
postActions: [
// Build insights: Track build times and performance
.executionAction(
title: "Inspect Build",
scriptText: """
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build
""",
target: "MyApp"
)
],
// Run build post-actions even if the build fails
runPostActionsOnFailure: true
),
testAction: .testAction(
targets: ["MyAppTests"],
postActions: [
// Test insights: Track test duration and flakiness
.executionAction(
title: "Inspect Test",
scriptText: """
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
""",
target: "MyAppTests"
)
]
),
runAction: .runAction(configuration: "Debug")
)
]
)如果不使用 Mise,脚本可简化为
swift
buildAction: .buildAction(
targets: ["MyApp"],
postActions: [
.executionAction(
title: "Inspect Build",
scriptText: "tuist inspect build",
target: "MyApp"
)
],
runPostActionsOnFailure: true
),
testAction: .testAction(
targets: ["MyAppTests"],
postActions: [
.executionAction(
title: "Inspect Test",
scriptText: "tuist inspect test"
)
]
)持续集成
要跟踪 CI 上的构建和测试洞察,您需要确保您的 CI 已通过
验证。此外,您还需要
- 在调用
xcodebuild操作时,使用`tuist xcodebuild` 命令。 - 在
xcodebuild调用中添加-resultBundlePath。
当xcodebuild 在没有-resultBundlePath 的情况下构建或测试您的项目时,不会生成所需的活动日志和结果包文件。tuist inspect build 和tuist inspect test 后操作都需要这些文件来分析您的构建和测试。
