Перейти к содержимому

Кэш Elixir

Tuist повторно использует скомпилированные зависимости локально и в сборках CI. Включите его один раз, а затем продолжайте использовать mix compile и mix test.

Настройка#

Выполните Начало работы с Elixir один раз. Общая настройка включает кэширование зависимостей вместе со сборкой и аналитикой тестов; дополнительная настройка кэша не требуется.

cache: true автоматически выбирает поддерживаемые зависимости Hex и Git; вам не нужно перечислять их вручную. Нативная/пользовательская компиляция и локальные зависимости продолжают обрабатываться через Mix как обычно. Исходные файлы вашего приложения не кэшируются.

Собирайте как обычно#

bash
mix compile
mix test

Когда зависимость требует компиляции, Tuist проверяет локальный кэш, а затем общий удаленный кэш. При промахе компиляция выполняется обычным образом, а результат сохраняется для будущих сборок. Выбранные поддерживаемые зависимости, которые Mix считает актуальными, учитываются как локальные попадания, если их скомпилированные артефакты присутствуют и действительны; обращение к кэшу не требуется. Если аутентификация или кэш недоступны, Mix все равно выполняет компиляцию в обычном режиме.

Просмотр попаданий в кэш#

Откройте раздел Mix Cache на панели управления проектом, чтобы увидеть процент попаданий, объем переданных данных и недавние сборки. Выберите вкладку Mix cache конкретной сборки, чтобы увидеть, какие задачи попали в кэш, а какие нет. Раздел CAS Outputs показывает фактические удаленные загрузки и выгрузки; локальные попадания не создают записей об удаленной передаче данных. Повторное использование уже актуальных артефактов увеличивает процент попаданий, но не приводит к передаче байтов, задержкам восстановления или экономии времени.

Чтобы проверить восстановление, очистите скомпилированные артефакты поддерживаемой зависимости и выполните сборку снова:

bash
mix deps.clean nimble_options --build
mix compile

Замените nimble_options на зависимость, которую использует ваш проект и которая уже заполнила кэш. Сохраняйте те же настройки окружения Mix и компилятора.

Настраивайте только при необходимости#

В большинстве проектов можно оставить cache: true. Для исключений используйте список ключевых слов:

elixir
tuist: [
project: "your-account/your-project",
cache: [exclude: [:a_dependency_with_compile_time_side_effects]]
]
  • Дополнительные входные данные времени компиляции: объявите внешние файлы с помощью inputs: ["schemas"] и переменные окружения с помощью env: ["COMPILER_OPTION"].
  • Только локально: установите remote: false.
  • Без удаленных выгрузок: установите upload: false. Доступ по-прежнему контролируется разрешениями сервера.
  • Отключить кэширование: установите cache: false.
Important

Компиляция может выполнять произвольный код Elixir. Объявляйте дополнительные входные данные и исключайте зависимости, чей код или побочные эффекты, зависящие от времени или сети, должны выполняться при каждой сборке. Кэшированные артефакты могут содержать секреты, а процессы записи в кэш являются доверенными производителями кода: не предоставляйте учетные данные для записи в кэш недоверенным задачам.

Сведения о выборе зависимостей, повторном использовании при разных путях извлечения, устранении неполадок и деталях реализации см. в расширенной настройке кэша для Elixir.