Кэш Elixir
Tuist повторно использует скомпилированные зависимости локально и в сборках CI. Включите его один раз, а затем продолжайте использовать mix compile и mix test.
Настройка#
Выполните Начало работы с Elixir один раз. Общая настройка включает кэширование зависимостей вместе со сборкой и аналитикой тестов; дополнительная настройка кэша не требуется.
cache: true автоматически выбирает поддерживаемые зависимости Hex и Git; вам не нужно перечислять их вручную. Нативная/пользовательская компиляция и локальные зависимости продолжают обрабатываться через Mix как обычно. Исходные файлы вашего приложения не кэшируются.
Собирайте как обычно#
mix compile
mix test
Когда зависимость требует компиляции, Tuist проверяет локальный кэш, а затем общий удаленный кэш. При промахе компиляция выполняется обычным образом, а результат сохраняется для будущих сборок. Выбранные поддерживаемые зависимости, которые Mix считает актуальными, учитываются как локальные попадания, если их скомпилированные артефакты присутствуют и действительны; обращение к кэшу не требуется. Если аутентификация или кэш недоступны, Mix все равно выполняет компиляцию в обычном режиме.
Просмотр попаданий в кэш#
Откройте раздел Mix Cache на панели управления проектом, чтобы увидеть процент попаданий, объем переданных данных и недавние сборки. Выберите вкладку Mix cache конкретной сборки, чтобы увидеть, какие задачи попали в кэш, а какие нет. Раздел CAS Outputs показывает фактические удаленные загрузки и выгрузки; локальные попадания не создают записей об удаленной передаче данных. Повторное использование уже актуальных артефактов увеличивает процент попаданий, но не приводит к передаче байтов, задержкам восстановления или экономии времени.
Чтобы проверить восстановление, очистите скомпилированные артефакты поддерживаемой зависимости и выполните сборку снова:
mix deps.clean nimble_options --build
mix compile
Замените nimble_options на зависимость, которую использует ваш проект и которая уже заполнила кэш. Сохраняйте те же настройки окружения Mix и компилятора.
Настраивайте только при необходимости#
В большинстве проектов можно оставить cache: true. Для исключений используйте список ключевых слов:
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.
Компиляция может выполнять произвольный код Elixir. Объявляйте дополнительные входные данные и исключайте зависимости, чей код или побочные эффекты, зависящие от времени или сети, должны выполняться при каждой сборке. Кэшированные артефакты могут содержать секреты, а процессы записи в кэш являются доверенными производителями кода: не предоставляйте учетные данные для записи в кэш недоверенным задачам.
Сведения о выборе зависимостей, повторном использовании при разных путях извлечения, устранении неполадок и деталях реализации см. в расширенной настройке кэша для Elixir.