Почему этот гайд вообще нужен
AI-кодеры сделали разработку намного быстрее. Но скорость без контроля означает, что ИИ может быстрее не только создать функцию, но и быстрее сломать рабочий сервис.
Нет. Между кодом и реальным пользователем должен появиться коридор проверок. Именно этот коридор и строит CI/CD.
До CI/CD
После CI/CD
Цель этого гайда не научить тебя писать YAML руками. Цель - дать ментальную модель: что должно произойти, в каком порядке и чем доказать, что всё реально работает.
GitHub с нуля: что с чем связано
Перед CI/CD нужно перестать воспринимать GitHub как «сайт, куда мы куда-то пушим код». GitHub в нашем процессе становится центральной системой управления версиями и автоматизацией.
Repository, или repo, хранит код, историю изменений, тесты, документацию и настройки автоматизации.
Где увидеть: главная страница конкретного проекта на GitHub.
Как сохранение в игре. После полезного изменения мы фиксируем состояние. У commit есть уникальный идентификатор, например a81f94c.
Зачем: можно точно сказать, какая версия работала вчера и какая стоит сейчас.
main обычно хранит стабильную основу. Новую функцию лучше делать в отдельной ветке, например feature/pdf-upload.
Зачем: ИИ может экспериментировать, не ломая основную версию.
Pull Request, сокращённо PR, показывает, что именно изменилось, какие файлы затронуты и прошли ли проверки.
Зачем: это естественная точка, где CI может автоматически проверить работу ИИ-кодера до merge.
Если PR прошёл проверки, изменения из рабочей ветки объединяются с main.
В базовой CI/CD-схеме такого основного элемента нет. Скорее всего, речь про GitHub Environments. Ниже разберём их отдельно: staging и production.
CI и CD простыми словами
CI: автоматическая проверка изменений
По-человечески: автоматическая проверка изменений.
ИИ изменил код. GitHub автоматически устанавливает проект, запускает нужные тесты, проверяет build. Если что-то не прошло - дальше не едем.
CI отвечает на вопрос: можно ли вообще принимать этот код?
CD: автоматическая доставка или публикация версии
Continuous Delivery - система автоматически готовит рабочую версию, но рабочая версия может требовать подтверждения человека.
Автоматическая публикация (Continuous Deployment) - после успешных проверок новая версия автоматически попадает пользователям.
Для новичка и коммерческого ИИ-проекта безопасная база: автоматический CI + контролируемый production deploy.
AI - повар. CI - контроль качества. CD - официант, который относит готовое блюдо клиенту. Сырое блюдо контроль не выпускает.
Что такое автоматизация GitHub Actions
GitHub Actions - встроенная в GitHub система автоматизации. Её логика простая: когда произошло событие X, автоматически выполни действия Y.
событие, которое запускает процесс
полный сценарий автоматизации
крупный блок работы
одно конкретное действие
компьютер, который выполняет команды
проверка успешна
проверка упала
текстовый файл с инструкциями
Где это лежит
Файлы workflows обычно находятся в repository по пути .github/workflows/. Например: ci.yml или deploy.yml.
.github/
└── workflows/
├── ci.yml
└── deploy.yml
Тебе не нужно уметь писать YAML с нуля. Но ты должен понимать, что этот файл задаёт: когда запускаться, что делать и какой результат считать успешным.
Секреты и обычные настройки (Secrets / Variables)
Пароль, API key, SSH private key, database password. Такое значение нельзя коммитить в Git.
Где увидеть: Repository → Settings → Secrets and variables → Actions.
Например APP_PORT=3000 или адрес публичного сервиса. Если кто-то увидит значение, это не должно создавать угрозу.
| Пример | Куда | Почему |
|---|---|---|
| DATABASE_PASSWORD | Secret | Открывает доступ к базе |
| OPENAI_API_KEY | Secret | Деньги и доступ к API |
| APP_PORT=3000 | Variable | Обычная настройка |
| PUBLIC_SITE_URL | Variable | Не секрет |
DEPLOY_SSH_KEY, но не должен выводить сам ключ в логах или README.Среды GitHub: тестовая и рабочая (staging / production)
Environment в GitHub - это цель deployment. Обычно новичку достаточно двух понятий:
Тестовая среда (staging)
Тестовая версия максимально похожая на настоящую. Здесь можно проверить выпуск до того, как его увидят реальные пользователи.
Рабочая версия (production)
Настоящая рабочая версия. Ошибка здесь затрагивает реальных пользователей и реальные деньги.
GitHub Environments могут хранить отдельные secrets и variables, ограничивать ветки и, в зависимости от тарифа и типа repository, использовать protection rules и approvals.
Без разделения staging и production легко случайно подключить тест к настоящей базе или удалить реальные данные, думая, что работаешь в песочнице.
| Тестовая среда (staging) | Рабочая версия (production) | |
|---|---|---|
| Кто пользуется | Ты и команда | Реальные пользователи |
| База | Тестовая | Настоящая |
| Secrets | Тестовые | Боевые |
| Можно экспериментировать | Да, осторожно | Нет |
Полный путь релиза от AI до пользователя
Какие проверки должен запускать CI
Автоматический поиск части ошибок и нарушений правил кода. Аналог проверки орфографии, только для программы.
Проверяет, что код не путает типы данных. Например, вместо числа случайно не передали текст.
Автоматические сценарии: дали входные данные → получили ожидаемый результат.
Проверка, что из исходного кода действительно собирается версия, которую можно запускать в production.
Базовые проверки утечек секретов, небезопасных dependencies и слишком широких permissions.
INSTALL → LINT → TEST → BUILD → PASS.
Не надо строить NASA. Нужен минимальный барьер, который реально ловит ошибки.
Статус автоматической проверки (Status Check)
Статус автоматической проверки (Status Check) - результат конкретной автоматической проверки. Если правило GitHub требует успешный check, красный результат может блокировать merge в защищённую ветку.
Защита основной ветки (Branch Protection / Rulesets)
Это правила, которые защищают важную ветку. Например: не разрешать обычный merge при красном CI, запретить force push или требовать Pull Request.
Как GitHub связан с VPS
Публикация - не одна команда. Это процесс доставки конкретной проверенной версии в среду, где она должна работать.
Слабая модель
SSH → git pull → restart → надеемся
Нормальная модель
проверенная версия ↓ production environment ↓ контролируемый deploy ↓ restart нужного service ↓ health ↓ smoke ↓ monitoring
Временный компьютер-исполнитель GitHub (runner)
Временный компьютер GitHub. Он появляется, выполняет workflow и исчезает. Хорошая базовая модель для CI.
Свой компьютер-исполнитель (self-hosted runner)
Runner на твоём собственном сервере. Это мощно, но опаснее: недоверенный код может выполняться прямо внутри твоей инфраструктуры. Для первого курса мы не делаем production VPS универсальной машиной для любых Pull Requests.
Контроль одновременных запусков (Concurrency)
Защита от двух production deploy одновременно. Если два релиза начинают менять один сервис параллельно, легко получить гонку и странное состояние.
Результат сборки и временный кэш
| Термин | По-человечески |
|---|---|
| Результат сборки | Результат работы: готовый build, архив release, отчёт тестов. |
| Кэш | Временные данные для ускорения следующих запусков. |
Запомни: Кэш ускоряет работу. Результат сборки является итогом процесса.
Проверка здоровья, быстрая и сквозная проверка: три уровня контроля
Например endpoint /health возвращает healthy. Это ещё не означает, что все функции работают.
Для бота: процесс запущен, Telegram доступен, база отвечает, критичный внешний API доступен.
Проверяем путь реального пользователя от входа до результата. Например пользователь написал боту → бот сходил в AI → пользователь получил ответ.
CI/CD не заменяет тестирование из Гайда №13. Он запускает эти проверки автоматически в правильный момент.
Изменение базы данных (migration): почему код откатить легче, чем данные
Migration - изменение структуры или содержимого базы: добавить поле, создать таблицу, изменить формат данных.
Новая версия удаляет колонку name. Потом новая версия приложения ломается. Ты возвращаешь старый код, но старый код ждёт name, которого уже нет. Код откатили, система всё равно сломана.
Безопасная логика
Любые destructive операции вроде DROP TABLE, DROP COLUMN, массовых DELETE и необратимых преобразований требуют отдельного human approval.
Откат (rollback): сломалось - верни рабочую версию
Rollback - возврат к предыдущей рабочей версии. Смысл не в том, чтобы никогда не ошибаться. Смысл - быстро вернуть стабильность пользователям.
Версия, про которую доказано: она была deploy, прошла health и Smoke, пользователи реально могли работать.
Вернуть application version часто легко. Вернуть удалённые или преобразованные production data может быть невозможно без backup и отдельного плана.
Не строй Kubernetes ради пяти пользователей
| Уровень | Что достаточно |
|---|---|
| 1. Первый рабочий проект | Branch → PR → CI → manual deploy → Health → Smoke |
| 2. Коммерческий продукт | Автоматические проверки → тестовая среда → сквозная проверка → подтверждение → рабочая версия → наблюдение → откат |
| 3. Большая нагрузка | готовые сборки, контейнеры, поэтапный выпуск, автоматический откат и расширенное наблюдение |
Сложность должна появляться только тогда, когда у неё есть реальная причина: деньги, пользователи, нагрузка или риск.
12 готовых промптов
Не просто «сделай CI/CD». Каждый промпт заставляет ИИ сначала восстановить фактическое состояние, объяснить новичку смысл и потом доказать результат.
Разобрать мой GitHub как новичку
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Объяснить мои GitHub Actions
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Разделить секреты, обычные настройки и конфигурацию
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Нарисовать мой реальный путь до VPS
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Защитить основную ветку main
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Проверить миграции базы
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Создать путь отката (rollback)
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Построить CI/CD и объяснять каждое действие
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Настроить CI с реальным «ошибка / прошло»
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Создать безопасную публикацию на VPS
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Аудит существующего пути выпуска
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Финальная E2E-приёмка CI/CD
Если автоматическое копирование заблокировано, нажми в поле, выдели текст и скопируй вручную.
Большой словарь
| Термин | Простыми словами |
|---|---|
| Git | Система истории изменений проекта. |
| GitHub | Сервис, где хранится Git-проект и запускается автоматизация. |
| Repository | Папка проекта в GitHub. |
| Commit | Сохранённая точка истории. |
| Commit SHA | Уникальный идентификатор конкретного commit. |
| Branch | Отдельная ветка изменений. |
| Main | Основная ветка проекта. |
| Push | Отправить локальные изменения в GitHub. |
| Pull Request | Предложение добавить изменения одной ветки в другую. |
| Merge | Объединить изменения. |
| CI | Автоматически проверить изменение кода. |
| CD | Автоматизировать доставку рабочей версии. |
| GitHub Actions | Система автоматизации внутри GitHub. |
| Workflow | Полный сценарий автоматизации. |
| YAML | Текстовый формат, которым обычно описан workflow. |
| Trigger | Событие, которое запускает workflow. |
| Job | Крупный блок работы внутри workflow. |
| Step | Одно конкретное действие. |
| Runner | Компьютер, который выполняет workflow. |
| Статус автоматической проверки (Status Check) | Результат автоматической проверки. |
| Secret | Скрытый пароль, токен или ключ. |
| Variable | Обычная несекретная настройка. |
| Environment | Среда, куда выкладываем приложение. |
| Тестовая среда (staging) | Тестовая среда, похожая на production. |
| Рабочая версия (production) | Настоящая рабочая версия для пользователей. |
| Публикация (deploy) | Установить новую версию в среду. |
| Факт публикации (deployment) | Конкретный факт публикации версии. |
| Build | Собрать готовое приложение из исходного кода. |
| Результат сборки | Сохранённый результат build или job. |
| Кэш | Временные данные для ускорения будущих запусков. |
| Release | Опубликованная версия проекта. |
| Tag | Метка на конкретном commit. |
| Health Check | Проверка, что сервис хотя бы жив. |
| Smoke Test | Быстрая проверка главных функций. |
| E2E | Сквозной тест полного пути пользователя. |
| Migration | Изменение структуры или данных базы. |
| Rollback | Возврат к предыдущей рабочей версии. |
| Known-good version | Версия, которая точно работала и была проверена. |
| Контроль одновременных запусков (Concurrency) | Контроль параллельных запусков. |
| Branch Protection | Правила защиты основной ветки. |
| Ruleset | Набор правил GitHub для веток и других объектов. |
| GITHUB_TOKEN | Временный служебный токен, который GitHub создаёт для job. |
| SSH | Защищённое подключение к серверу. |
| VPS | Удалённый виртуальный сервер. |
| Временный компьютер-исполнитель GitHub (runner) | Временный компьютер GitHub. |
| Свой компьютер-исполнитель (self-hosted runner) | Runner на твоём собственном сервере. |
| Подтверждение (approval) | Ручное подтверждение перед чувствительным шагом. |
| Monitoring | Наблюдение за здоровьем и ошибками работающего сервиса. |
25 пунктов: у тебя реально есть CI/CD?
Галочка ставится не потому, что ИИ написал «готово», а только если пункт можно доказать.
Не создавай учебный проект. Возьми настоящий.
Что принести на разбор
Ссылка на repository, Pull Request, скрин GitHub Actions PASS, скрин намеренного FAIL, исправленный PASS, deployed commit SHA, результат Health, результат Smoke и описание rollback.
Главная фраза домашки:
«Раньше мой deployment выглядел так: ... Теперь он выглядит так: ...»
AI создаёт быстро. Git сохраняет историю. GitHub контролирует поток изменений. Actions автоматически проверяет. Secrets безопасно дают доступ. Environment определяет, куда идёт версия. VPS запускает. Monitoring наблюдает. Rollback возвращает стабильность, если что-то пошло не так.
Так вайбкодинг перестаёт быть экспериментом и превращается в управляемую production-разработку.
Что проверено по официальной документации GitHub
Проверено на 14.09.2026. Возможности GitHub Environments, approvals и protection rules могут зависеть от типа repository и тарифа, поэтому перед внедрением ИИ должен проверить актуальные ограничения конкретного аккаунта.