DevOps и инфраструктура

Учебник CI/CD для начинающих

25 уроков · 6 разделов · бесплатно, без регистрации

Этот курс учит автоматизировать путь кода от пуша до прода с помощью 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. 1 Введение в CI/CD

    1. Что такое CI и CD и зачем они нужны

      CI и CD простыми словами: непрерывная интеграция и доставка, какие проблемы ручного процесса они решают и чем отличаются.

    2. Место GitHub Actions среди CI/CD-инструментов

      Что такое GitHub Actions, как он устроен относительно репозитория, чем отличается от Jenkins и GitLab CI и когда его выбирать.

    3. Ключевые понятия: workflow, job, step, action, runner

      Базовый словарь GitHub Actions: что такое workflow, job, step, action и runner и как они вложены друг в друга.

    4. Первый workflow: реагируем на push

      Создаём первый workflow-файл в .github/workflows: триггер on push, один job, checkout и запуск команды. Где смотреть результат.

  2. 2 Анатомия workflow

    1. Триггеры: on push, pull_request, schedule, workflow_dispatch

      Все способы запустить workflow: push и pull_request, расписание schedule, ручной workflow_dispatch и фильтры по веткам и путям.

    2. Jobs, steps и runners

      Как устроены jobs и steps, выбор runner через runs-on, параллельность jobs и их изоляция в GitHub Actions.

    3. Готовые экшены: checkout, setup-node, setup-python

      Как подключать готовые экшены через uses: checkout, setup-node и setup-python, версии тегов и параметры with.

    4. Команды run и переменные env

      Запуск команд через run, многострочные скрипты, рабочая директория и переменные окружения env на разных уровнях workflow.

  3. 3 Сборка и тесты (CI)

    1. Типовой CI-пайплайн: checkout, setup, install, test

      Базовая структура CI-пайплайна на GitHub Actions: получить код, поставить окружение, установить зависимости и запустить тесты.

    2. Матрицы: тестируем на нескольких версиях

      Стратегия matrix в GitHub Actions: запуск job на нескольких версиях и ОС, fail-fast, include и exclude.

    3. Кэширование зависимостей

      Ускоряем CI кэшем зависимостей: actions/cache с ключом по хешу lock-файла, restore-keys и встроенный кэш setup-экшенов.

    4. Артефакты и статусные проверки на PR

      Сохранение и передача артефактов через upload/download-artifact и обязательные статусные проверки для защиты ветки.

  4. 4 Секреты и переменные

    1. GitHub Secrets: храним чувствительные данные

      Что такое GitHub Secrets, где их создавать, как использовать в workflow и почему их нельзя класть в код.

    2. Переменные репозитория и окружения

      Чем переменные (vars) отличаются от секретов в GitHub Actions, когда использовать каждое и как переопределять значения по окружениям.

    3. Контексты и выражения

      Контексты github, env, secrets, matrix и синтаксис выражений ${{ }} в GitHub Actions: функции, операторы и условия.

    4. Безопасность: GITHUB_TOKEN и permissions

      Встроенный GITHUB_TOKEN, принцип наименьших привилегий через permissions и правила, чтобы не утекли секреты из workflow.

  5. 5 Доставка и развёртывание (CD)

    1. Environments и ручные апрувы

      Окружения (environments) в GitHub Actions: required reviewers, защита, секреты окружения и контроль выкладки на production.

    2. Условия if и зависимости needs

      Управление потоком в workflow: зависимости между jobs через needs, последовательность, условия if и always/success.

    3. Деплой по тегу и релизу

      Запуск деплоя по тегу и релизу: триггеры on push tags и on release, фильтр по версии и выкладка на сервер по SSH.

    4. Публикация: npm-пакет и Docker-образ

      Публикация артефактов из CI: npm publish с NODE_AUTH_TOKEN и сборка/пуш Docker-образа в GitHub Container Registry.

  6. 6 Продвинутое и практика

    1. Переиспользуемые workflow и composite actions

      DRY в CI/CD: reusable workflows через workflow_call с inputs и secrets, и composite actions для группировки шагов.

    2. Concurrency: отмена лишних прогонов

      Группы concurrency и cancel-in-progress в GitHub Actions: отмена устаревших прогонов и защита деплоя от гонок.

    3. Отладка падающих пайплайнов

      Как чинить красные workflow: чтение логов, воспроизведение локально, debug-логирование, типичные причины падений CI.

    4. Полный пример: lint, test, build, deploy

      Собираем боевой пайплайн от пуша до прода: lint и test на PR, build артефакта и условный deploy на main с окружением.

    5. Что дальше: другие CI/CD-системы

      Куда расти после GitHub Actions: GitLab CI, Jenkins, общие принципы пайплайнов и переносимые навыки CI/CD.