Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-окружении.

## Технологии
В проекте используются следующие технологии:

Expand Down