Кэш Bazel
Tuist предоставляет кэш Remote Execution API, к которому Bazel подключается как к удалённому кэшу. Если выходные данные действия уже есть в кэше, Bazel пропускает это действие и забирает результат из кэша Tuist, экономя время компиляции для всей команды и в средах CI/CD.
Настройка#
В корне рабочего пространства Bazel выполните:
tuist bazel setup
Эта команда создаёт файл .bazelrc.tuist рядом с вашим .bazelrc, настраивая подключение к ближайшему региону кэша Tuist и аутентификацию через вспомогательный инструмент учётных данных для каждого рабочего пространства. Она также добавляет строку try-import в файл .bazelrc вашего репозитория:
try-import %workspace%/.bazelrc.tuist
Передайте флаг --no-add-bazelrc-import, если хотите управлять импортом самостоятельно.
Добавьте .bazelrc.tuist в ваш .gitignore и запускайте настройку на каждой машине вместо того, чтобы коммитить этот файл. Сгенерированный файл указывает на абсолютный путь к вспомогательному инструменту учётных данных в каталоге конфигурации Tuist текущего пользователя и на регион кэша, ближайший к машине, которая его сгенерировала, поэтому ни одно из этих значений не подойдёт коллеге или агенту непрерывной интеграции. Закоммитьте строку try-import в файле .bazelrc, который одинаков на всех машинах.
Настройка не изменяет существующий .bazelrc, если не может найти маркер рабочего пространства Bazel, если файл является символической ссылкой или если в нём уже настроен удалённый кэш или сервис Build Event Service. Благодаря этому повторный запуск команды идемпотентен.
Выполните обычную команду Bazel, чтобы проверить интеграцию:
bazel build //...
Активность кэша затем отображается на странице проекта Bazel Cache в панели управления Tuist, где показаны передача данных кэша, загрузки и выгрузки, задержки чтения и записи, пропускная способность и процент попаданий в кэш действий. Раздел Overview проекта содержит сводку того же процента попаданий в кэш действий вместе с длительностью сборки.
Чтобы увидеть, как конкретная команда использовала кэш, откройте её из раздела Invocations. Страница вызова разделяет поисковые запросы к кэшу действий и запросы объектов контента, что позволяет отличить холодный кэш действий от медленной загрузки артефакта.
Аналитика сборок#
По умолчанию tuist bazel setup также настраивает сервис Build Event Service в Bazel, чтобы завершённые команды отображались на панели Invocations. См. аналитику сборок Bazel, чтобы узнать, что показывает панель и как прикреплять пользовательские метаданные.
Если вам нужен только удалённый кэш и вы не хотите отправлять поток событий сборки, откажитесь от этой функции с помощью:
tuist bazel setup --no-build-insights
Непрерывная интеграция#
Аутентифицируйте CI, используя один из методов из руководства по аутентификации, затем выполните tuist bazel setup один раз на этапе checkout, чтобы .bazelrc.tuist указывал на правильный регион для агента. См. руководство по непрерывной интеграции для примеров под конкретных провайдеров.
Хранение данных#
Tuist хранит данные наблюдений за удалённым кэшем в течение 90 дней. См. политику хранения данных для получения полной информации.