100 lines
3.8 KiB
YAML
100 lines
3.8 KiB
YAML
# --- Пайплайн №1: Сборка Docker-образа для backend ---
|
|
kind: pipeline
|
|
type: docker
|
|
name: build-backend
|
|
|
|
# Запускать только если были изменения в папке 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
|
|
|
|
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 ---"
|