GitHub Actions — мощный инструмент, но без оптимизации ваш пайплайн легко превратится в тормозную мясорубку. Разбираемся, как выжать максимум из CI/CD на GitHub.

Почему это важно:   Быстрые и надёжные пайплайны — ключ к высокой скорости доставки. Медленные сборки = потеря времени, нервов и денег.

1. Кэшируй разумно  

Используй actions/cache для ускорения зависимостей, но не кэшируй всё подряд. Пример для Node.js:

YAML

- uses: actions/cache@v4

  with:

    path: ~/.npm

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

    restore-keys: |

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

⚠️ Ключ должен быть завязан на lock-файлы, иначе можно словить конфликты версий.

2. Делай job-ы параллельными  

Разделяй пайплайн на независимые шаги — unit-тесты, линтеры, сборка. Добавляй needs: там, где реально нужно, а не везде.

3. Matrix strategy — must-have  

Хочешь тестировать на разных версиях языка/ОС? Используй matrix:

YAML
strategy:

  matrix:

    node-version: [16, 18, 20]
Нажмите, чтобы развернуть и увидеть больше

Это масштабирует проверку без дублирования кода.

4. Отключи ненужные события  

Не запускай воркфлоу на каждом чихе. Используй on: грамотно:

YAML


on:

  push:

    branches:

      - main

  pull_request:

    paths:

      - 'src/**'
Нажмите, чтобы развернуть и увидеть больше

Это поможет не перегружать runners.

5. Используй workflow_dispatch для ручных запусков  

Иногда надо протестить пайплайн руками — не бойся добавить ручной триггер:

YAML

on:

  workflow_dispatch:
Нажмите, чтобы развернуть и увидеть больше

6. Логи и таймауты — твои друзья  

Добавляй timeout-minutes к job-ам и выводи ключевые логи через ::group:: и ::endgroup::, чтобы не утонуть в консоли.

Вывод:  

Грамотно настроенный GitHub Actions экономит время и снижает головную боль. Избегай монолитных пайплайнов, кэшируй умно и тестируй только то, что нужно. Автоматизация — это про контроль, а не хаос.

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

Автор: Vasiliy Fakunin

Ссылка: https://notes.melancholic.tech/posts/ci/cd-%D0%B1%D0%B5%D0%B7-%D0%B1%D0%BE%D0%BB%D0%B8-%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D0%B0%D0%B9%D0%BF%D0%BB%D0%B0%D0%B9%D0%BD%D0%BE%D0%B2-%D0%BD%D0%B0-github-actions/

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

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

Начать поиск

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

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