Учебник CI/CD для начинающих
Этот курс учит автоматизировать путь кода от пуша до прода с помощью GitHub Actions. Вы разберётесь, что такое непрерывная интеграция (CI) и непрерывная доставка/развёртывание (CD), научитесь писать workflow-файлы, гонять тесты на каждый pull request, кэшировать зависимости, хранить секреты и безопасно деплоить на сервер или в облако. Курс рассчитан на тех, кто уже знает Git/GitHub и основы разработки, но не настраивал пайплайны. К концу вы соберёте полный пайплайн lint → test → build → deploy и поймёте, как читать и чинить чужие workflow.
Курс «CI/CD: GitHub Actions» состоит из 6 разделов и 25 уроков: Введение в CI/CD, Анатомия workflow, Сборка и тесты (CI), Секреты и переменные, Доставка и развёртывание (CD) и Продвинутое и практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в CI/CD
- Что такое CI и CD и зачем они нужны
CI и CD простыми словами: непрерывная интеграция и доставка, какие проблемы ручного процесса они решают и чем отличаются.
- Место GitHub Actions среди CI/CD-инструментов
Что такое GitHub Actions, как он устроен относительно репозитория, чем отличается от Jenkins и GitLab CI и когда его выбирать.
- Ключевые понятия: workflow, job, step, action, runner
Базовый словарь GitHub Actions: что такое workflow, job, step, action и runner и как они вложены друг в друга.
- Первый workflow: реагируем на push
Создаём первый workflow-файл в .github/workflows: триггер on push, один job, checkout и запуск команды. Где смотреть результат.
- Что такое CI и CD и зачем они нужны
2 Анатомия workflow
- Триггеры: on push, pull_request, schedule, workflow_dispatch
Все способы запустить workflow: push и pull_request, расписание schedule, ручной workflow_dispatch и фильтры по веткам и путям.
- Jobs, steps и runners
Как устроены jobs и steps, выбор runner через runs-on, параллельность jobs и их изоляция в GitHub Actions.
- Готовые экшены: checkout, setup-node, setup-python
Как подключать готовые экшены через uses: checkout, setup-node и setup-python, версии тегов и параметры with.
- Команды run и переменные env
Запуск команд через run, многострочные скрипты, рабочая директория и переменные окружения env на разных уровнях workflow.
- Триггеры: on push, pull_request, schedule, workflow_dispatch
3 Сборка и тесты (CI)
- Типовой CI-пайплайн: checkout, setup, install, test
Базовая структура CI-пайплайна на GitHub Actions: получить код, поставить окружение, установить зависимости и запустить тесты.
- Матрицы: тестируем на нескольких версиях
Стратегия matrix в GitHub Actions: запуск job на нескольких версиях и ОС, fail-fast, include и exclude.
- Кэширование зависимостей
Ускоряем CI кэшем зависимостей: actions/cache с ключом по хешу lock-файла, restore-keys и встроенный кэш setup-экшенов.
- Артефакты и статусные проверки на PR
Сохранение и передача артефактов через upload/download-artifact и обязательные статусные проверки для защиты ветки.
- Типовой CI-пайплайн: checkout, setup, install, test
4 Секреты и переменные
- GitHub Secrets: храним чувствительные данные
Что такое GitHub Secrets, где их создавать, как использовать в workflow и почему их нельзя класть в код.
- Переменные репозитория и окружения
Чем переменные (vars) отличаются от секретов в GitHub Actions, когда использовать каждое и как переопределять значения по окружениям.
- Контексты и выражения
Контексты github, env, secrets, matrix и синтаксис выражений ${{ }} в GitHub Actions: функции, операторы и условия.
- Безопасность: GITHUB_TOKEN и permissions
Встроенный GITHUB_TOKEN, принцип наименьших привилегий через permissions и правила, чтобы не утекли секреты из workflow.
- GitHub Secrets: храним чувствительные данные
5 Доставка и развёртывание (CD)
- Environments и ручные апрувы
Окружения (environments) в GitHub Actions: required reviewers, защита, секреты окружения и контроль выкладки на production.
- Условия if и зависимости needs
Управление потоком в workflow: зависимости между jobs через needs, последовательность, условия if и always/success.
- Деплой по тегу и релизу
Запуск деплоя по тегу и релизу: триггеры on push tags и on release, фильтр по версии и выкладка на сервер по SSH.
- Публикация: npm-пакет и Docker-образ
Публикация артефактов из CI: npm publish с NODE_AUTH_TOKEN и сборка/пуш Docker-образа в GitHub Container Registry.
- Environments и ручные апрувы
6 Продвинутое и практика
- Переиспользуемые workflow и composite actions
DRY в CI/CD: reusable workflows через workflow_call с inputs и secrets, и composite actions для группировки шагов.
- Concurrency: отмена лишних прогонов
Группы concurrency и cancel-in-progress в GitHub Actions: отмена устаревших прогонов и защита деплоя от гонок.
- Отладка падающих пайплайнов
Как чинить красные workflow: чтение логов, воспроизведение локально, debug-логирование, типичные причины падений CI.
- Полный пример: lint, test, build, deploy
Собираем боевой пайплайн от пуша до прода: lint и test на PR, build артефакта и условный deploy на main с окружением.
- Что дальше: другие CI/CD-системы
Куда расти после GitHub Actions: GitLab CI, Jenkins, общие принципы пайплайнов и переносимые навыки CI/CD.
- Переиспользуемые workflow и composite actions