Что такое кеш в GitLab

Ответ

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

Пример использования в .gitlab-ci.yml:

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/
    - .cache/

Нюансы:

  • Кеш не гарантирует сохранность данных (может быть очищен).
  • Для критичных данных лучше использовать artifacts.
  • Можно настраивать политики инвалидации через key (например, по ветке).

Ответ 18+ 🔞

Ну, слушай, смотри, есть такая штука в GitLab — кеш. Это типа такая хитрая жопа, которая запоминает всякий хлам, который у тебя нагенерировалось в процессе работы: там библиотеки, какие-то временные файлы, прочее говно. Суть в чём? Чтобы в следующий раз, когда ты запускаешь пайплайн, не начинать с нуля, а взять уже готовенькое из закромов. Экономия времени — овердохуища, особенно если зависимости тяжёлые.

Вот, смотри, как это в конфиге выглядит, простейший пример:

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/
    - .cache/

Видишь? Говорим: "Запоминай, блядь, всё, что в node_modules и .cache". А ключ (key) — это чтобы понимать, откуда брать сохранённую копию. Тут по имени ветки, например.

Но вот, бля, нюансы, которые в рот меня чих-пых!

Во-первых, кеш — это не священный артефакт, его могут в любой момент почистить, как старый хлам. На него надейся, но сам не проебибна. Если файлы критически важные и их обязательно нужно передать между джобами — это artifacts, а не кеш.

Во-вторых, с ключами можно выёбываться. Можно завязать их на версию lock-файла, например, чтобы кеш инвалидировался только когда зависимости реально поменялись, а не просто потому что коммит новый. А то бывает настроишь криво — и он каждый раз всё заново качает, терпения ебать ноль.

Короче, штука полезная, но подходить к ней надо с мозгом, а не просто скопипастить и забыть. Иначе вместо ускорения получишь волнение ебать, где же твой кеш-то делся.