# Кэш Bazel {#bazel-cache}

Tuist предоставляет кэш [Remote Execution API](https://github.com/bazelbuild/remote-apis), к которому Bazel подключается как к удалённому кэшу. Если выходные данные действия уже есть в кэше, Bazel пропускает это действие и забирает результат из кэша Tuist, экономя время компиляции для всей команды и в средах CI/CD.

## Настройка {#setup}

В корне рабочего пространства Bazel выполните:

```bash
tuist bazel setup
```

Эта команда создаёт файл `.bazelrc.tuist` рядом с вашим `.bazelrc`, настраивая подключение к ближайшему региону кэша Tuist и аутентификацию через вспомогательный инструмент учётных данных для каждого рабочего пространства. Она также добавляет строку `try-import` в файл `.bazelrc` вашего репозитория:

```text
try-import %workspace%/.bazelrc.tuist
```

Передайте флаг `--no-add-bazelrc-import`, если хотите управлять импортом самостоятельно.

Добавьте `.bazelrc.tuist` в ваш `.gitignore` и запускайте настройку на каждой машине вместо того, чтобы коммитить этот файл. Сгенерированный файл указывает на абсолютный путь к вспомогательному инструменту учётных данных в каталоге конфигурации Tuist текущего пользователя и на регион кэша, ближайший к машине, которая его сгенерировала, поэтому ни одно из этих значений не подойдёт коллеге или агенту непрерывной интеграции. Закоммитьте строку `try-import` в файле `.bazelrc`, который одинаков на всех машинах.

Настройка не изменяет существующий `.bazelrc`, если не может найти маркер рабочего пространства Bazel, если файл является символической ссылкой или если в нём уже настроен удалённый кэш или сервис Build Event Service. Благодаря этому повторный запуск команды идемпотентен.

Выполните обычную команду Bazel, чтобы проверить интеграцию:

```bash
bazel build //...
```

Активность кэша затем отображается на странице проекта **Bazel Cache** в панели управления Tuist, где показаны передача данных кэша, загрузки и выгрузки, задержки чтения и записи, пропускная способность и процент попаданий в кэш действий. Раздел **Overview** проекта содержит сводку того же процента попаданий в кэш действий вместе с длительностью сборки.

Чтобы увидеть, как конкретная команда использовала кэш, откройте её из раздела **Invocations**. Страница вызова разделяет поисковые запросы к кэшу действий и запросы объектов контента, что позволяет отличить холодный кэш действий от медленной загрузки артефакта.

## Аналитика сборок {#build-insights}

По умолчанию `tuist bazel setup` также настраивает сервис Build Event Service в Bazel, чтобы завершённые команды отображались на панели **Invocations**. См. <.localized_link href="/guides/features/build-insights/bazel">аналитику сборок Bazel</.localized_link>, чтобы узнать, что показывает панель и как прикреплять пользовательские метаданные.

Если вам нужен только удалённый кэш и вы не хотите отправлять поток событий сборки, откажитесь от этой функции с помощью:

```bash
tuist bazel setup --no-build-insights
```

## Непрерывная интеграция {#continuous-integration}

Аутентифицируйте CI, используя один из методов из <.localized_link href="/guides/server/authentication#continuous-integration">руководства по аутентификации</.localized_link>, затем выполните `tuist bazel setup` один раз на этапе checkout, чтобы `.bazelrc.tuist` указывал на правильный регион для агента. См. <.localized_link href="/guides/integrations/continuous-integration">руководство по непрерывной интеграции</.localized_link> для примеров под конкретных провайдеров.

## Хранение данных {#data-retention}

Tuist хранит данные наблюдений за удалённым кэшем в течение 90 дней. См. политику <.localized_link href="/guides/server/data-retention">хранения данных</.localized_link> для получения полной информации.
