zov-tech/scripts/deploy-staging.sh
wasrusgen ea04e042df feat: staging-окружение (Docker Compose + Caddy + deploy-script)
docker-compose.staging.yml — backend-staging на порту 8001.
.env.staging.example — шаблон с отдельным SHEET_ID.
Caddyfile.staging.snippet — staging.api.wasrusgen1.pro.
scripts/deploy-staging.sh — один скрипт для деплоя staging.
app.js: BACKEND_URL читается из ?backend= параметра URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 14:22:01 +03:00

49 lines
1.6 KiB
Bash

#!/bin/bash
# Деплой staging-бэкенда на VPS.
# Использует docker-compose.staging.yml + .env.staging
#
# Запуск: bash scripts/deploy-staging.sh
# Требует: SSH-ключ ~/.ssh/zov_vps_ed25519, .env.staging на VPS
set -e
VPS="root@94.241.170.144"
SSH="ssh -i $HOME/.ssh/zov_vps_ed25519"
REMOTE_DIR="/opt/zov-tech"
echo "🚀 Деплой STAGING → $VPS"
# 1. Синхронизируем код
echo " [1/3] git pull на VPS..."
$SSH $VPS "cd $REMOTE_DIR && git pull origin master"
# 2. Проверяем .env.staging
echo " [2/3] Проверка .env.staging..."
$SSH $VPS "
if [ ! -f $REMOTE_DIR/deploy/.env.staging ]; then
echo 'ERROR: .env.staging не найден!'
echo 'Скопируйте deploy/.env.staging.example → deploy/.env.staging и заполните.'
exit 1
fi
if grep -q 'ЗАМЕНИТЕ' $REMOTE_DIR/deploy/.env.staging; then
echo 'ERROR: .env.staging содержит незаполненные поля (ЗАМЕНИТЕ)!'
exit 1
fi
echo 'OK'
"
# 3. Пересобираем и запускаем
echo " [3/3] docker compose up --build..."
$SSH $VPS "
cd $REMOTE_DIR/deploy
docker compose -f docker-compose.staging.yml --env-file .env.staging up -d --build
"
echo ""
echo "✅ Staging задеплоен!"
echo " Backend: https://staging.api.wasrusgen1.pro/healthz"
echo " MiniApp: https://wasrusgen.github.io/zov-tech/?backend=https://staging.api.wasrusgen1.pro"
echo ""
echo "🧪 Запуск smoke-тестов против staging:"
echo " SMOKE_URL='https://wasrusgen.github.io/zov-tech/?backend=https://staging.api.wasrusgen1.pro' node tests/ui_smoke.js"