# Настройка CI/CD (Drone CI) Проект настроен для автоматической сборки Docker-образов и их развертывания с помощью Drone CI. ## Обзор пайплайна (.drone.yml) Конфигурация состоит из 4-х пайплайнов: 1. **build-backend**: Собирает образ `backend`, тегирует его (latest + commit SHA) и пушит в Docker Registry. 2. **build-frontend**: Многоэтапная сборка (Node.js build -> Nginx image), пуш в Registry. 3. **build-ping-helper**: Сборка микросервиса `ping-helper`. 4. **deploy-production**: Запускается только при пуше в `main` после успешного завершения всех сборок. Подключается к серверу по SSH, обновляет код, скачивает новые образы и перезапускает контейнеры. ## Настройка интеграции (Gitea + Drone) 1. **Активация репозитория**: * Зайдите в ваш Drone CI. * Найдите репозиторий `minecraft-platform/platform` и нажмите "Activate". 2. **Настройка секретов (Secrets)**: В настройках репозитория в Drone добавьте следующие секреты: | Имя Секрета | Описание | | :--- | :--- | | `gitea_username` | Логин пользователя Gitea, от имени которого будут пушиться образы в Registry. | | `gitea_password` | Пароль (или токен) этого пользователя. | | `ssh_host` | IP адрес или домен вашего продакшен-сервера. | | `ssh_user` | Имя пользователя на сервере (например, `root` или `ubuntu`). | | `ssh_key` | **Приватный** SSH ключ для доступа к серверу (Private Key, который соответствует Public Key в `~/.ssh/authorized_keys` на сервере). | 3. **Docker Registry**: Убедитесь, что `gitea.mrixs.me` поддерживает Docker Registry и у пользователя есть права на запись в пакеты `minecraft-platform/backend`, `frontend`, `ping-helper`. 4. **Настройка Вебхука (Webhooks)**: Чтобы Drone автоматически запускал сборку при пуше (push): * В Gitea перейдите в **Settings** (Настройки) репозитория -> **Webhooks**. * Проверьте, есть ли там вебхук для Drone. Если нет, он должен был создаться автоматически при активации репозитория в Drone. * Если вебхука нет, добавьте его вручную: * **Target URL**: `https://drone.mrixs.me/hook` (адрес вашего Drone сервера) * **HTTP Method**: `POST` * **Content Type**: `application/json` * **Trigger On**: `All Events` (или как минимум Push и Pull Request) * Нажмите "Test Delivery", чтобы проверить связь. Обратите внимание на код ответа (должен быть 200 OK). ## Процесс развертывания 1. Сделайте изменения в коде. 2. Закоммитьте и запушьте в ветку `main`. 3. Drone автоматически: * Соберет новые образы. * Запушит их в Registry. * Зайдет на сервер, сделает `docker-compose pull` и `docker-compose up -d`.