Skip to content

Перевод 🌍

Вы можете перевести или улучшить перевод этой страницы.

Внести вклад

Озарения

::: предупреждение РЕКВИЗИТЫ

:::

Работа над крупными проектами не должна казаться рутиной. На самом деле, она должна быть такой же приятной, как и работа над проектом, который вы начали всего две недели назад. Одна из причин, по которой это не так, заключается в том, что по мере роста проекта страдает опыт разработчиков. Время сборки увеличивается, а тесты становятся медленными и нестабильными. Зачастую на эти проблемы легко не обращать внимания, пока они не становятся невыносимыми - однако в этот момент их сложно решить. 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 требуют эти файлы для анализа ваших сборок и тестов.

Released under the MIT License.