diff --git a/README.md b/README.md index 40e7f58..bd18b3a 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,51 @@ - Если запрос сделан на **английском**, поиск выполняется напрямую, без перевода. - **Детальные рецепты.** После поиска вы получаете список коктейлей. Нажав на любой из них, вы увидите полный рецепт с инструкциями и дозировками, переведенными на русский язык. +## CI/CD Процесс + +Проект использует GitHub Actions для автоматизации сборки, тестирования, анализа качества кода и развертывания. Весь процесс описан в файле `.github/workflows/check.yml` и состоит из трёх основных этапов (jobs), которые выполняются последовательно. + +### Триггеры запуска + +Рабочий процесс (workflow) запускается автоматически в следующих случаях: +- **Push**: При отправке коммитов в ветки `master` или `CI`. +- **Pull Request**: При создании или обновлении pull request, нацеленного на ветку `master`. +- **Вручную**: Может быть запущен вручную через интерфейс GitHub Actions (`workflow_dispatch`). + +### 1. Сборка и Тестирование (`build-and-test`) + +Это первый и обязательный этап. + +1. **Настройка среды**: Запускается на виртуальной машине с `ubuntu-latest`. +2. **Загрузка кода**: Код репозитория загружается в рабочую среду. +3. **Установка Java**: Устанавливается `JDK 18` (Temurin). +4. **Сборка с Maven**: Выполняется команда `mvn -B package`, которая компилирует код, запускает тесты и упаковывает приложение в JAR-файл. +5. **Сохранение артефакта**: Собранный JAR-файл (и другие файлы из папки `target/`) сохраняется как артефакт с именем `app-artifact`. Это позволяет передать результат сборки на следующие этапы. + +### 2. Анализ качества кода (`qodana`) + +Этот этап запускается только после успешного завершения `build-and-test`. + +1. **Загрузка кода**: Снова загружается код репозитория с полной историей коммитов (`fetch-depth: 0`), что необходимо для качественного анализа pull request'ов. +2. **Qodana Scan**: Запускается статический анализатор кода [Qodana](https://www.jetbrains.com/qodana/) от JetBrains. + - Он выполняет полное сканирование проекта (`pr-mode: false`). + - Результаты анализа отправляются в [Qodana Cloud](https://qodana.cloud/) с использованием `QODANA_TOKEN`, который хранится в секретах репозитория. + - Анализатор также публикует результаты в виде комментариев к pull request и обновляет статусы проверок на GitHub. + +### 3. Сборка и запуск Docker-контейнеров (`docker-build-and-run`) + +Этот этап также зависит от успешной сборки (`build-and-test`) и выполняется параллельно с анализом Qodana. + +1. **Загрузка кода**: Загружается код репозитория. +2. **Загрузка артефакта**: Ранее сохраненный `app-artifact` (содержащий JAR-файл) загружается в папку `target/`. +3. **Настройка Docker Buildx**: Настраивается расширенный сборщик Docker. +4. **Сборка и запуск**: Выполняется команда `docker compose up --build -d`, которая: + - Собирает Docker-образы для сервисов, описанных в `docker-compose.yml` (включая `telegram-bot` и `libretranslate`). + - Запускает контейнеры в фоновом режиме (`-d`). +5. **Проверка контейнеров**: После 60-секундной паузы (чтобы дать контейнерам время запуститься), выводятся логи запущенных контейнеров для проверки их состояния. + +Этот CI/CD пайплайн обеспечивает полную проверку кода на каждом этапе: от компиляции и тестов до статического анализа и проверки успешного запуска в Docker-окружении. + ## Технологии В проекте используются следующие технологии: