Ответ
В GitLab CI/CD кеш — это механизм для сохранения файлов и директорий между разными запусками пайплайнов в рамках одного проекта. Его основная цель — ускорить выполнение jobs за счет повторного использования зависимостей (например, пакетов, скомпилированных объектов), избегая их повторной загрузки или сборки.
Базовый пример конфигурации в .gitlab-ci.yml:
cache:
key: ${CI_COMMIT_REF_SLUG} # Уникальный ключ (часто по ветке)
paths:
- node_modules/ # Кешируемые пути
- .gradle/caches/
policy: pull-push # Политика: скачать и обновить кеш
build_job:
script:
- npm ci # Быстрая установка из кешированных node_modules
Ключевые особенности и практика:
- Ключ (key): Определяет версию кеша. Использование
$CI_COMMIT_REF_SLUGсоздает отдельный кеш для каждой ветки. - Политики (policy):
pull-push(по умолчанию): job скачивает существующий кеш и обновляет его.pull: job только использует кеш, но не обновляет его (полезно для deploy-стадий).push: job только создает/обновляет кеш.
- Кеш vs Артефакты: Кеш не гарантирует сохранность и предназначен для ускорения сборки. Для передачи билдов между стадиями используйте
artifacts. - Очистка: Кеш может быть удален администратором или при нехватке места, поэтому критичные данные в нем хранить нельзя.