CI тормозит? Пайплайн гоняет
npm install по 5 минут? Пора серьёзно поговорить о кешировании в GitHub Actions.GitHub Actions — мощный инструмент, но без кеша даже самый простой билд превращается в черепаху. Разберёмся, как грамотно использовать
actions/cache, чтобы выжать максимум скорости.🔧 Основы кеширования
GitHub предоставляет официальный экшен actions/cache, который позволяет сохранять каталоги между запусками воркфлоу. Ключевое понятие здесь — ключ кеша (cache key).
Пример:
- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
Что тут происходит:
-
path — папка, которую кешируем (`~/.npm`).-
key — уникальный ключ, зависящий от lock-файла.-
restore-keys — запасной вариант, если точного совпадения ключа нет.⚡ Трюки для ускорения
1. Разделяй кеш по задачам. Не пихай всё в один архив. Кешируй отдельно
npm, node_modules, dist/ — это гибко и эффективно.2. Для Docker-образов — кешируй слои. Используй BuildKit и флаг
--cache-to, --cache-from. Пример:
- name: Build Docker image
run: |
docker buildx build \
--cache-from=type=gha \
--cache-to=type=gha,mode=max \
-t my-app .
3. Осторожно с ключами. Часто меняющийся ключ = каждый раз новый кеш = медленно. Сделай разумный баланс между стабильностью и свежестью.
4. Тестируй локально. Используй act, чтобы отлаживать воркфлоу на локалке — сэкономишь время и нервы.
✅ Вывод
Кеш в GitHub Actions — не волшебная пуля, но при правильной настройке он может сократить время CI в разы. Следи за размером кеша, обновляй ключи с умом и профилируй пайплайн. И не забывай: кеш — твой друг, пока ты его контролируешь.
#devops #девопс
📲 Мы в MAX
Подпишись 👉@i_DevOps
