Skip to content

Кэш Xcode

Tuist обеспечивает поддержку кэша компиляции Xcode, что позволяет командам обмениваться артефактами компиляции, используя возможности кэширования системы сборки.

Настройка#

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

:::

Если у вас еще нет учетной записи Tuist и проекта, вы можете создать их, выполнив команду:

bash
tuist init

Когда у вас есть файл Tuist.swift, ссылающийся на ваш fullHandle, вы можете настроить кэширование для своего проекта, выполнив команду:

bash
tuist setup cache

Эта команда создает LaunchAgent для запуска локальной службы кэширования при запуске, которую система сборки Swift использует для обмена артефактами компиляции. Эту команду нужно выполнить один раз в локальной и CI-средах.

Чтобы настроить кэш на CI, убедитесь, что вы прошли аутентификацию.

Настройка параметров сборки Xcode#

Добавьте следующие настройки сборки в свой проект Xcode:

bash
COMPILATION_CACHE_ENABLE_CACHING = YES
COMPILATION_CACHE_REMOTE_SERVICE_PATH = $HOME/.local/state/tuist/your_org_your_project.sock
COMPILATION_CACHE_ENABLE_PLUGIN = YES
COMPILATION_CACHE_ENABLE_DIAGNOSTIC_REMARKS = YES

Обратите внимание, что COMPILATION_CACHE_REMOTE_SERVICE_PATH и COMPILATION_CACHE_ENABLE_PLUGIN должны быть добавлены как пользовательские настройки сборки, поскольку они не отображаются непосредственно в пользовательском интерфейсе настроек сборки Xcode:

Socket Path

Путь к сокету будет отображаться при запуске tuist setup cache. Он основан на полном дескрипторе вашего проекта с заменой косых черт на подчеркивания.

Вы также можете указать эти настройки при запуске xcodebuild, добавив следующие флаги, например:

bash
xcodebuild build -project YourProject.xcodeproj -scheme YourScheme \
COMPILATION_CACHE_ENABLE_CACHING=YES \
COMPILATION_CACHE_REMOTE_SERVICE_PATH=$HOME/.local/state/tuist/your_org_your_project.sock \
COMPILATION_CACHE_ENABLE_PLUGIN=YES \
COMPILATION_CACHE_ENABLE_DIAGNOSTIC_REMARKS=YES
Generated Projects

Задавать настройки вручную не нужно, если ваш проект сгенерирован Tuist.

В этом случае достаточно добавить enableCaching: true в файл Tuist.swift:

swift
import ProjectDescription
let tuist = Tuist(
fullHandle: "your-org/your-project",
project: .tuist(
generationOptions: .options(
enableCaching: true
)
)
)

Непрерывная интеграция#

Чтобы включить кэширование в среде CI, нужно выполнить ту же команду, что и в локальных средах: tuist setup cache.

Кроме того, необходимо убедиться, что переменная окружения TUIST_TOKEN установлена. Вы можете создать ее, следуя документации здесь. Переменная окружения TUIST_TOKEN _ должна_ присутствовать на вашем шаге сборки, но мы рекомендуем установить ее для всего рабочего процесса CI.

Пример рабочего процесса для GitHub Actions может выглядеть следующим образом:

yaml
name: Build
env:
TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
jobs:
build:
steps:
- # Your set up steps...
- name: Set up Tuist Cache
run: tuist setup cache
- # Your build steps