Озарения
::: предупреждение РЕКВИЗИТЫ
:::
Работа над крупными проектами не должна казаться рутиной. На самом деле, она должна быть такой же приятной, как и работа над проектом, который вы начали всего две недели назад. Одна из причин, по которой это не так, заключается в том, что по мере роста проекта страдает опыт разработчиков. Время сборки увеличивается, а тесты становятся медленными и нестабильными. Зачастую на эти проблемы легко не обращать внимания, пока они не становятся невыносимыми - однако в этот момент их сложно решить. Tuist Insights предоставляет вам инструменты для мониторинга состояния проекта и поддержания продуктивной среды разработчиков по мере масштабирования проекта.
Другими словами, Tuist Insights поможет вам ответить на такие вопросы, как:
- Значительно ли увеличилось время сборки за последнюю неделю?
- Стали ли мои тесты работать медленнее? Какие именно?
INFO
Tuist Insights находится на ранней стадии разработки.
Сборки
В то время как у вас, вероятно, есть некоторые показатели производительности рабочих процессов CI, вы можете не иметь такого же представления о локальной среде разработки. Однако время локальной сборки - один из важнейших факторов, влияющих на работу разработчиков.
Чтобы начать отслеживать время локальной сборки, вы можете воспользоваться командой tuist inspect build, добавив ее в пост-акцию вашей схемы:

INFO
Мы рекомендуем установить параметр "Provide build settings from" на исполняемый файл или вашу основную цель сборки, чтобы Tuist мог отслеживать конфигурацию сборки.
INFO
Если вы не используете
генерируемые проекты, действие post-scheme не выполняется в случае неудачисборки.
Недокументированная функция в Xcode позволяет выполнить его даже в этом случае. Установите атрибут
runPostActionsOnFailureв значениеYESвBuildAction вашей схемыв соответствующемфайле project.pbxprojследующим образом: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 build::: наконечник MISE & PROJECT PATHS
Переменная окружения PATH не наследуется пост-экшеном схемы, поэтому вам придется использовать абсолютный путь Mise, который зависит от того, как вы установили Mise. Кроме того, не забудьте унаследовать настройки сборки от цели в вашем проекте, чтобы вы могли запускать Mise из каталога, на который указывает $SRCROOT.
:::
Ваши локальные сборки теперь отслеживаются, пока вы входите в свою учетную запись Tuist. Теперь вы можете получить доступ к времени сборки на панели Tuist и посмотреть, как оно изменяется с течением времени:
TIP
Чтобы быстро получить доступ к приборной панели, выполните команду tuist project show --web из CLI.

Тесты
Помимо отслеживания сборок, вы также можете контролировать свои тесты. Тестовые инсайты помогут вам выявить медленные тесты или быстро разобраться в неудачных прогонах CI.
Чтобы начать отслеживать свои тесты, вы можете воспользоваться командой tuist inspect test, добавив ее в пост-акцию тестирования вашей схемы:

Если вы используете 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 test::: наконечник MISE & PROJECT PATHS
Переменная окружения PATH не наследуется пост-экшеном схемы, поэтому вам придется использовать абсолютный путь Mise, который зависит от того, как вы установили Mise. Кроме того, не забудьте унаследовать настройки сборки от цели в вашем проекте, чтобы вы могли запускать Mise из каталога, на который указывает $SRCROOT.
:::
Проведение тестов теперь отслеживается до тех пор, пока вы входите в свою учетную запись Tuist. Вы можете получить доступ к результатам тестирования на приборной панели Tuist и увидеть, как они меняются со временем:

Помимо общих тенденций, вы также можете глубоко погрузиться в каждый отдельный тест, например, при отладке сбоев или медленных тестов на CI:

Сгенерированные проекты
INFO
Автоматически сгенерированные схемы автоматически включают пост-действия 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
аутентифицирован.Кроме того, вам потребуется:
- Используйте команду`tuist xcodebuild` при вызове действий
xcodebuild. - Добавьте
-resultBundlePathк вызовуxcodebuild.
Когда xcodebuild собирает или тестирует ваш проект без -resultBundlePath, необходимые файлы журнала активности и пакета результатов не создаются. Пост-операции tuist inspect build и tuist inspect test требуют эти файлы для анализа ваших сборок и тестов.
