Ускоряем CI/CD пайплайны на GitHub Actions: кеширование по-взрослому

CI тормозит? Пайплайн гоняет npm install по 5 минут? Пора серьёзно поговорить о кешировании в GitHub Actions.

GitHub Actions — мощный инструмент, но без кеша даже самый простой билд превращается в черепаху. Разберёмся, как грамотно использовать actions/cache, чтобы выжать максимум скорости.

🔧 Основы кеширования

GitHub предоставляет официальный экшен actions/cache , который позволяет сохранять каталоги между запусками воркфлоу. Ключевое понятие здесь — ключ кеша (cache key).

Пример:

YAML
- uses: actions/cache@v3

  with:

    path: ~/.npm

    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

    restore-keys: |

      ${{ runner.os }}-node-
Нажмите, чтобы развернуть и увидеть больше

Что тут происходит:

⚡ Трюки для ускорения

  1. Разделяй кеш по задачам. Не пихай всё в один архив. Кешируй отдельно npm, node_modules, dist/ — это гибко и эффективно.

  2. Для Docker-образов — кешируй слои. Используй BuildKit и флаг –cache-to, –cache-from. Пример:

DOCKERFILE
name: Build Docker image

  run: |

      docker buildx build \

      --cache-from=type=gha \

      --cache-to=type=gha,mode=max \

      -t my-app .
Нажмите, чтобы развернуть и увидеть больше
  1. Осторожно с ключами. Часто меняющийся ключ = каждый раз новый кеш = медленно. Сделай разумный баланс между стабильностью и свежестью.

  2. Тестируй локально. Используй act , чтобы отлаживать воркфлоу на локалке — сэкономишь время и нервы. ✅ Вывод

Кеш в GitHub Actions — не волшебная пуля, но при правильной настройке он может сократить время CI в разы. Следи за размером кеша, обновляй ключи с умом и профилируй пайплайн. И не забывай: кеш — твой друг, пока ты его контролируешь.

#devops #девопс

Авторские права

Автор: Vasiliy Fakunin

Ссылка: https://notes.melancholic.tech/posts/%D1%83%D1%81%D0%BA%D0%BE%D1%80%D1%8F%D0%B5%D0%BC-ci/cd-%D0%BF%D0%B0%D0%B9%D0%BF%D0%BB%D0%B0%D0%B9%D0%BD%D1%8B-%D0%BD%D0%B0-github-actions-%D0%BA%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE-%D0%B2%D0%B7%D1%80%D0%BE%D1%81%D0%BB%D0%BE%D0%BC%D1%83/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша