Урок 4. CI/CD и автоматизация в HAPI#
Зачем это нужно#
Когда над проектом работает команда, важно автоматизировать рутинные задачи: проверку кода, сборку, публикацию. HAPI использует GitHub Actions — встроенную систему автоматизации GitHub — для этого.
CI/CD (Continuous Integration / Continuous Delivery) — непрерывная интеграция и доставка. Это практика, когда код автоматически проверяется и собирается при каждом изменении.
GitHub Actions — сервис GitHub, который запускает задачи автоматически при определённых событиях (например, когда кто-то отправляет код или создаёт pull request).
Какие автоматизации есть в HAPI#
В папке .github/workflows/ находятся 6 файлов — каждый описывает одну автоматизацию:
1. 🧪 Тесты (test.yml)#
Когда запускается: при каждом push и pull request.
Что делает:
- Скачивает код
- Устанавливает Bun
- Устанавливает зависимости (
bun install) - Проверяет типы (
bun typecheck) - Запускает тесты (
bun run test)
Зачем: чтобы убедиться, что новый код ничего не сломал.
2. 🤖 AI-ревью PR (codex-pr-review.yml)#
PR (Pull Request) — запрос на добавление изменений в проект. Другие участники проверяют код перед принятием.
Когда запускается: когда открывается новый PR или PR переводится из черновика в готовый.
Что делает:
- AI-модель Codex (GPT-5.2) автоматически проверяет код в PR
- Оставляет комментарий с замечаниями и рекомендациями
- Не проверяет PR от ботов и PR с меткой
bot-skip - Не дублирует ревью — если бот уже оставлял комментарий, повторно не запускается
Зачем: ускоряет ревью кода и ловит типичные ошибки.
3. 💬 Автоответ на issues (issue-auto-response.yml)#
Issue — тикет/задача в репозитории: баг-репорт, запрос на функцию, вопрос.
Когда запускается: когда создаётся новый issue или добавляется метка.
Что делает:
- Codex анализирует issue и автоматически отвечает
- Пропускает дубликаты (
duplicate), спам (spam) и issues с меткойbot-skip - Отвечает только один раз
Зачем: пользователи быстрее получают первый ответ, а разработчикам не нужно отвечать на типовые вопросы.
4. 🗣️ Ответы на упоминания (codex-mention-response.yml)#
Когда запускается: когда кто-то упоминает @tiann в комментарии.
Что делает:
- Codex отвечает на вопрос или комментарий
- Работает только для пользователей с правами записи (write access)
- Не отвечает на свои же комментарии и на issues с меткой
bot-skip
Зачем: быстрая помощь разработчикам прямо в обсуждении.
5. 📦 Релиз (release.yml)#
Релиз — публикация новой версии программы.
Когда запускается: когда создаётся новый тег версии (например, v1.2.3).
Что делает:
- Собирает бинарные файлы для всех платформ
- Упаковывает в архивы (
.tar.gzдля macOS/Linux,.zipдля Windows) - Считает контрольные суммы (checksums)
- Создаёт релиз на GitHub с файлами для скачивания
- Обновляет формулу Homebrew (менеджер пакетов для macOS)
6. 🌐 Деплой веб-приложения (webapp.yml)#
Деплой (deploy) — размещение приложения на сервере, чтобы оно стало доступно пользователям.
Когда запускается: при изменениях в папке web/ в ветке main.
Что делает:
- Собирает веб-приложение
- Публикует на GitHub Pages (бесплатный хостинг от GitHub)
- Доступно по адресу
app.hapi.run
Как это всё связано#
Разработчик вносит изменения
│
├─► Push в любую ветку
│ └─► test.yml: проверка кода и тесты
│
├─► Открывает PR
│ └─► codex-pr-review.yml: AI проверяет код
│
├─► PR принят в main + изменения в web/
│ └─► webapp.yml: обновление сайта
│
├─► Создаёт тег v1.2.3
│ └─► release.yml: сборка + публикация
│
└─► Новый issue или комментарий
└─► issue-auto-response.yml / codex-mention-response.ymlМетка bot-skip#
Если вы не хотите, чтобы бот отвечал на конкретный issue или PR, добавьте метку bot-skip. Все автоматизации с AI проверяют эту метку и пропускают такие задачи.
Итоги урока#
- HAPI использует 6 автоматизаций GitHub Actions для рутинных задач
- Тесты запускаются автоматически при каждом изменении кода
- AI (Codex) автоматически ревьюит PR, отвечает на issues и комментарии
- Релизы собираются для всех платформ одной командой при создании тега
- Веб-приложение автоматически публикуется при изменениях
- Метка
bot-skipотключает AI-автоматизации для конкретной задачи