Files
platform/.drone.yml
Vladimir Zagainov f11d2a14c8
Some checks failed
continuous-integration/drone/push Build is failing
Fix: Change submodule URL to HTTPS for CI
2025-06-16 09:57:11 +03:00

108 lines
3.9 KiB
YAML

# --- Пайплайн №1: Сборка Docker-образа для backend ---
kind: pipeline
type: docker
name: build-backend
clone:
depth: 0
recursive: true
# Запускать только если были изменения в папке backend/
trigger:
event: [push, pull_request]
path:
- backend/**
steps:
- name: build-and-publish-backend
image: plugins/docker
settings:
# Имя репозитория в Docker Registry вашего Gitea
repo: gitea.mrixs.me/minecraft-platform/backend
# Адрес вашего Docker Registry
registry: gitea.mrixs.me
# Путь к Dockerfile внутри клонированного репозитория
dockerfile: backend/Dockerfile
# Контекст сборки
context: backend
# Логин и пароль для пуша в Gitea Registry (нужно настроить в секретах Drone)
username: { from_secret: gitea_username }
password: { from_secret: gitea_password }
# Теги для образа: latest и короткий хеш коммита
tags:
- latest
- ${DRONE_COMMIT_SHA:0:7}
---
# --- Пайплайн №2: Сборка Docker-образа для ping-helper ---
kind: pipeline
type: docker
name: build-ping-helper
clone:
depth: 0
recursive: true
trigger:
event: [push, pull_request]
path:
- ping-helper/**
steps:
- name: build-and-publish-ping-helper
image: plugins/docker
settings:
repo: gitea.mrixs.me/minecraft-platform/ping-helper
registry: gitea.mrixs.me
dockerfile: ping-helper/Dockerfile
context: ping-helper
username: { from_secret: gitea_username }
password: { from_secret: gitea_password }
tags:
- latest
- ${DRONE_COMMIT_SHA:0:7}
---
# --- Пайплайн №3: Развертывание на продакшен-сервере ---
kind: pipeline
type: ssh
name: deploy-production
# Запускать только при пуше в ветку main
trigger:
branch: [main]
event: [push]
# Этот пайплайн зависит от успешного выполнения сборок
depends_on:
- build-backend
- build-ping-helper
# Настройки подключения к вашему серверу
server:
host: { from_secret: ssh_host }
user: { from_secret: ssh_user }
key: { from_secret: ssh_key }
# Команды, которые будут выполнены на сервере
# ВАЖНО: Замените /home/user/platform на реальный путь к вашему проекту на сервере
commands:
- echo "--- Starting deployment ---"
- cd /home/user/platform # Переходим в директорию проекта
- echo "1. Updating repository..."
- git pull origin main # Обновляем основной репозиторий
- git submodule update --init --recursive # Обновляем все субмодули
- echo "2. Building frontend static files..."
# Запускаем одноразовый контейнер для сборки фронтенда
- docker run --rm -v $(pwd)/frontend:/app -v /app/node_modules -w /app node:18-alpine sh -c "npm install && npm run build"
# Перемещаем собранную статику в папку data/frontend, которую использует Caddy
- rm -rf ./data/frontend/*
- mv ./frontend/dist/* ./data/frontend/
- echo "3. Pulling new Docker images..."
- docker-compose pull # Скачиваем свежесобранные образы backend и ping-helper
- echo "4. Restarting services..."
- docker-compose up -d # Перезапускаем все сервисы в фоновом режиме
- echo "5. Cleaning up old images..."
- docker image prune -f # Удаляем неиспользуемые образы
- echo "--- Deployment finished ---"