EnglishРусский中文

Урок 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.

Что делает:

  1. Скачивает код
  2. Устанавливает Bun
  3. Устанавливает зависимости (bun install)
  4. Проверяет типы (bun typecheck)
  5. Запускает тесты (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).

Что делает:

  1. Собирает бинарные файлы для всех платформ
  2. Упаковывает в архивы (.tar.gz для macOS/Linux, .zip для Windows)
  3. Считает контрольные суммы (checksums)
  4. Создаёт релиз на GitHub с файлами для скачивания
  5. Обновляет формулу Homebrew (менеджер пакетов для macOS)

6. 🌐 Деплой веб-приложения (webapp.yml)#

Деплой (deploy) — размещение приложения на сервере, чтобы оно стало доступно пользователям.

Когда запускается: при изменениях в папке web/ в ветке main.

Что делает:

  1. Собирает веб-приложение
  2. Публикует на GitHub Pages (бесплатный хостинг от GitHub)
  3. Доступно по адресу 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-автоматизации для конкретной задачи