Files
platform/docs/CI_CD.md

53 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Настройка 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`.