🧊 Интенсив по DevOps
От основ до production-ready проекта
Ты освоил основы CI/CD и хочешь большего? Если эта тема тебя захватила и ты хочешь прокачать свои навыки, тогда рекомендуем тебе пройти продвинутый курс по DevOps, который станет твоим следующим шагом к экспертизе.
Погрузись в мир DevOps и автоматизации с практическим подходом! В данном интенсиве ты пройдёшь путь от знакомства с DevOps-культурой до запуска полноценного production-ready проекта с автоматическим деплоем.
Что тебя ждёт:
1 — освоишь основы контейнеризации: установишь Docker, научишься работать с Docker Compose и поймёшь, как DevOps-подход ускоряет разработку.
2 — настроишь CI/CD-пайплайны с нуля: разберёшься в теории непрерывной интеграции и доставки, освоишь GitHub Actions с правильной работой с секретами, и запустишь свой первый автоматический деплой.
3 — соберёшь реальный проект: создашь монорепозиторий с Frontend (React) и Backend (Node.js), поднимешь и настроишь NGINX, и настроишь полностью автоматизированный деплой через Docker Compose и GitHub Actions.
Практика, реальные кейсы и навыки, которые можно сразу применить в работе! 🚀
🏗️ Основы DevOps, CI/CD для Front-end, GitHub Actions
Автор конспекта: Стогниева Виктория
Важное замечание от ментора⚠️
🎧 Демо-приложение (Music Fun) не будет полноценно работать после развертывания, если нет платной подписки на используемый API. Но все шаги нужно проделать, чтобы освоить процесс. В уроке вы намеренно «спалите» свой API-ключ, опубликовав его в репозитории. Это важный урок безопасности. После урока немедленно перегенерируйте ключ в API-сервисе.
1. 🚀 Введение: От локальной разработки к глобальной доступности
Мы живём в мире localhost, но настоящая магия начинается, когда приложение уходит «в свет» и становится доступным пользователям по всему миру 🌍.
Понимание того, как ваш код попадает на сервер и превращается в работающий продукт — это то, что превращает разработчика в инженера.
Этот навык критически важен для:
- 💼 портфолио
- 🧪 тестовых заданий
- 🧱 уверенного понимания инфраструктуры
Сегодня мы настроим полноценный CI/CD-пайплайн через GitHub Actions и осмыслим весь процесс доставки.
2. 🏗️ Сборка приложения: Превращение исходников в продукт
Код, который мы пишем (TSX, CSS modules, TypeScript), — сырой материал. Он не может
запускаться браузером напрямую.
Нам нужен этап сборки — превращение этого кода в оптимизированный, минифицированный, готовый к продакшену артефакт.
2.1. ⚙️ Команды npm run dev и npm run build
npm run dev
- режим разработки
- запускает локальный dev-сервер (
Vite) hot reload🔥 ( «горячая перезагрузка» )- не создаёт файлов сборки
npm run build
- создаёт производственную версию приложения
- компиляция, транспиляцию, минификация, оптимизация
- кладёт результат в
/dist📦
2.2. 📁 Артефакт сборки: папка dist
После npm run build появляется папка dist — это и есть приложение.
Содержимое:
-
index.html -
минифицированные
.jsфайлы -
минифицированные
.cssфайлы❗Важно:
distиnode_modules— производные директории → их нельзя хранить в Git. Добавьте их в.gitignore.
3. 🌐 Хостинг: Где живёт приложение
Чтобы приложение заработало в интернете, его файлы должны быть размещены на сервере.
3.1. 🗂️ Что такое хостинг статики?
Хосинг статики - простой сервер, основная задача которого — по запросу пользователя отдать ему
статические файлы: HTML, CSS и JavaScript. Популярные серверы для этих целей:
NginxCaddy
3.2. 💸 GitHub Pages — бесплатное решение
GitHub Pages идеально подходит для:
- портфолио 💼
- документации 📚
- демо-проектов
- SPA 🚀
Он даёт бесплатный адрес вида:
4. ✋ Ручное развертывание на GitHub Pages
Прежде чем автоматизировать, нужно понять механику.
4.1. Процесс ручного деплоя 🚀
Процесс состоит из следующих шагов:
-
Создание отдельного репозитория. 🗂️ Для этого метода мы создаём новый, чистый репозиторий на
GitHub. Он будет предназначен исключительно для хранения скомпилированных файлов из папкиdist. -
Сборка проекта. 🏗️ Локально в своём проекте выполняем команду:
Эта команда генерирует папку dist с готовым приложением.
- Копирование файлов 📁➡️📦
Копируем содержимое папки dist (а не саму папку!) в корень нашего нового репозитория, чтобы
GitHub Pages было проще найти index.html.
- Коммит и пуш 🔧📤
Фиксируем изменения и отправляем их в удалённый репозиторий:
- Активация GitHub Pages 🌐✨
В настройках репозитория на GitHub переходим во вкладку Pages. В разделе Source выбираем:
- Deploy from a branch
- Ветка: main
Сохраняем настройки.
После этих действий GitHub запустит процесс развертывания, и через несколько минут ваше приложение
будет доступно по ссылке.
4.2. ❌ Ошибки путей — почему страница пустая?
Если появляется 404 — это нормально.
Проблема: Vite ожидает, что проект лежит в корне домена (/). GitHub Pages кладёт его в
подпапку (/repo-name/).
Решение: В vite.config.js добавить:
4.3. 🔥 Самая важная часть: Утечка API-ключа
Если вы добавили ключ в код и закоммитили — всё, ключ скомпрометирован навсегда.
Даже если вы его удалите, он всё равно остаётся в истории Git.
Единственное решение — перегенерировать ключ.
🚀 5. Автоматизация с CI/CD: Концепция и компоненты
CI/CD — это современный инженерный подход к разработке и доставке ПО. Его задача — сделать развертывание быстрым, надежным и полностью автоматическим. На этом этапе мы перестаем быть просто кодерами — мы начинаем мыслить как инженеры и выстраивать конвейер доставки продукта.
🔍 5.1. Расшифровка CI/CD
CI — Continuous Integration (Непрерывная интеграция)
Разработчики часто отправляют (пушат) код в общий репозиторий — и каждый пуш автоматически запускает проверки.
CD — Continuous Delivery / Deployment (Непрерывная доставка / развертывание)
Код проходит сборку, тестирование и автоматически доставляется на сервер после успешной интеграции.
🖥️ 5.2. Три ключевых сервера в CI/CD
Чтобы понять архитектуру, представим её как систему из трёх компонентов:
-
Git-сервер(GitHub) Хранилище кода:TSX,CSS-модули, конфиги и т.д. -
CI/CD-сервер(GitHub Actions) Оркестратор, который реагирует на пуши, забирает код и выполняет пайплайн. -
Хостинг-сервер (
GitHub Pages) Конечная точка, на которую выкладывается папкаdist.

Далее мы настроим главное звено — GitHub Actions.
⚙️ 6. GitHub Actions: автоматический пайплайн
GitHub Actions позволяет создавать CI/CD пайплайны с помощью workflow-файлов — сценариев,
которые выполняются автоматически.
📂 6.1. Структура workflow-файла (.yml)
Файл deploy.yml лежит в папке: .github/workflows/
Основные элементы:
- name — название пайплайна
- on — триггер, который запускает процесс (например,
push в main) - jobs — список задач, которые необходимо выполнить.
- runs-on — виртуальная среда (
ubuntu-latest), в которой будет выполняться задача. - steps — последовательность команд
- permissions — права
workflowдля взаимодействия с репозиторием
🛠️ 6.2. Пошаговая настройка пайплайна
Стандартный пайплайн развёртывания:
actions/checkout@v4— клонирует репозиторийactions/setup-node@v4— устанавливаетNode.jsnpm install— устанавливает зависимостиnpm run build— создаёт папкуdistupload-pages-artifact@v3— упаковывает артефактdeploy-pages@v4— загружает артефакт наGitHub Pages
Для корректной работы нужно выдать workflow необходимые права через permissions.
📝 Пример файла
🔐 6.3. Управление секретами: профессиональный подход
Автоматизация позволяет безопасно работать с API-ключами с помощью переменных окружения. Это
исключает риск утечки секретов и делает проект профессионально оформленным.
🗂 1. Файл .env
В корне проекта создаётся файл:
Для Vite важно, чтобы ключ начинался с префикса VITE_, иначе он не попадёт в окружение
фронтенда.
📄 2. Файл .gitignore
Необходимо добавить .env в .gitignore:
Это гарантирует, что ваши секреты никогда не попадут в репозиторий — ни случайно, ни по ошибке.
💻 3. Доступ к ключу в коде
Получение значения переменной:
🛡️ 4. Безопасная реализация
Просто подставлять undefined в заголовок — плохая практика. Правильный подход — добавлять
заголовок только если ключ действительно существует.
Поэтому создаём вспомогательную функцию, которая формирует заголовки безопасным образом:
🧼 5. Почему это важно: чистый и безопасный код
Такой подход делает код:
- чистым 🧹
- надёжным 🛡️
- предсказуемым в продакшене 🚀
Вы избегаете ситуации, когда в запросы улетают невалидные заголовки, а процесс развертывания становится не только автоматизированным, но и по-настоящему безопасным.
🧠 7. Заключение: Мышление инженера
Освоение DevOps-практик, таких как настройка CI/CD-пайплайна, — это не просто получение нового
навыка. Это фундаментальный сдвиг в мышлении.
Вы переходите:
- от простого написания кода ✍️
- к пониманию всего жизненного цикла приложения 🔄
Этот путь делает вас уверенным и востребованным профессионалом. Вы перестаёте бояться «инженерной инженерии» и начинаете понимать, как устроены современные процессы разработки.
🏠 Домашнее задание
Цель задания: Научиться деплоить приложение на GitHub Pages двумя способами: вручную и автоматически с использованием CI/CD процессов. Освоить работу с GitHub Actions и настройку окружения для production-сборки.
Задание 1
Ручной деплой проекта Trelly на GitHub Pages
- Создай папку с названием trelly-deploy
- Сбилди проект, в котором ты проделываешь домашние задания для проекта trelly, чтобы создалась папка dist с минифицированным кодом
- Перенеси полученные файлы из папки dist в trelly-deploy
- Проинициализируй проект при помощи команды git init.
- Добавь в папку файл .gitignore и добавь в исключения папку .idea.
- Закоммить файлы
- На github.com создай новый репозиторий с таким же названием trelly-deploy
- Свяжи локальный и удалённый репозитории. Запушь на удалённый репозиторий сбилдженный минифицированный код
- Зайди в настройки репозитория на вкладку Settings. В разделе pages выбери deploy from a branch. Затем выбери main ветку и сохрани изменения

- После этих изменений во вкладке Actions автоматически запустится деплой приложения

- Если ты всё сделал верно, то по итогу твоё приложение будет успешно задеплоено. Адрес можно увидеть в джобе deploy

- Но когда ты перейдёшь на страницу приложения, то увидишь белый экран и ошибки в консоли. Самостоятельно устрани все ошибки по аналогии, как в видео
- ошибки, связанные с конфигурацией Vite
- ошибки, связанные с api-key
(
Do not provide the API key for this domain; keep it secret. (code=8)) - добавь адрес задеплоенного приложения в apihub
Если ты всё сделал верно, то по итогу ты сможешь увидеть своё задеплоенное приложение в сети 🚀

Задание 2
Автоматический деплой проекта Trelly на GitHub Pages
Деплой приложения, который ты проделал в первом задании, не самый удобный. Нужно в репозитории изменять и билдить, потом полученный минифицированный код переносить. Жутко неудобно, но иногда такой подход имеет место быть.
Поэтому в данном задании тебе нужно самостоятельно (по видео) настроить CI/CD процессы для автоматического деплоя приложения
-
В предыдущем домашнем задании (26 урок, задание 3, пункт 4) тебе нужно было создать репозиторий для работы с домашними заданиями и запушить его удалённо. Если ты этого не сделал, то сделай сейчас.
-
Добавь в репозиторий файл .env, в котором храни api-key.
Обязательно добавь .env в .gitignore
- Напиши инструкцию, каким образом нужно деплоить приложение в .github/workflows/deploy.yaml
- В настройках репозитория в разделе pages/build and deployment выбери источник деплоя Github Action
Если ты всё сделал верно, то по итогу ты сможешь увидеть своё задеплоенное приложение в сети 🚀
🎯 Поздравляем! Ты только что сделал важнейший шаг в карьере разработчика — научился деплоить свои приложения в интернет. Теперь твои проекты могут увидеть миллионы пользователей по всему миру!
🔶 Деплой — это не просто техническая задача, это мост между твоим кодом и реальными людьми, которые будут им пользоваться. Каждый успешный деплой — это маленькая победа, которая приближает тебя к работе мечты.
🔶 Помни: все великие приложения, которыми мы пользуемся каждый день, начинались с первого деплоя. Сегодня ты задеплоил Trelly, а завтра — кто знает? — может быть, это будет следующий революционный сервис, который изменит мир!
🔶 Продолжай изучать DevOps-практики, автоматизацию и CI/CD — эти навыки сделают тебя бесценным специалистом на рынке труда. Вперёд к новым достижениям! 🚀💪


