53 lines
3.8 KiB
Markdown
53 lines
3.8 KiB
Markdown
# Настройка 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`.
|