Files
netrunner-data/.github/workflows/deploy.yml
T
nineap 3b8c0aeebd CI: переименовывает DB_*→VW_DB_* и переносит несекретные значения в vars
DATA_VPS_IP, имя/юзер БД, домен/лог-левел/SIGNUPS_ALLOWED/SMTP-хост-порт-
security-username Vaultwarden — в vars (не секреты сами по себе). Пароли
(VW_DB_PASSWORD, SMTP_PASSWORD), ADMIN_TOKEN и SSH-ключ остаются в secrets.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 16:37:48 +07:00

85 lines
3.8 KiB
YAML
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.
name: Deploy
# ВАЖНО: DATA_VPS_IP/DATA_SSH_PRIVATE_KEY должны указывать на ТОТ ЖЕ VPS, что
# и прод netrunner-backend (тот же процесс Postgres, сеть netrunner_grid —
# см. docker-compose.yml). Деплой backend'а должен быть выполнен на этом VPS
# РАНЬШЕ первого запуска этого workflow — иначе `docker compose up` здесь
# упадёт с "network netrunner_grid not found".
#
# Без сборки образов (postgres/vaultwarden — публичные образы, не наши).
# Несекретные значения (DATA_VPS_IP, имя/юзер БД, домен/лог-левел/SMTP-хост-порт
# Vaultwarden) — repo Variables (vars.*), не Actions secrets: видны так же, как
# сам код, просто не маскируются в логах. Настоящие секреты (пароли/токены/
# приватный ключ) — только secrets.*. .env на сервере пересобирается с нуля на
# каждом деплое (ничего не хранится в репозитории).
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy:
name: Deploy to Data VPS
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Sync compose file to VPS
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ vars.DATA_VPS_IP }}
username: root
key: ${{ secrets.DATA_SSH_PRIVATE_KEY }}
source: "docker-compose.yml"
target: "/root/netrunner-data"
strip_components: 0
- name: Write .env and deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ vars.DATA_VPS_IP }}
username: root
key: ${{ secrets.DATA_SSH_PRIVATE_KEY }}
envs: "VW_DB_USER,VW_DB_PASSWORD,VW_DB_NAME,VAULTWARDEN_DOMAIN,VAULTWARDEN_SIGNUPS_ALLOWED,VAULTWARDEN_ADMIN_TOKEN,VAULTWARDEN_LOG_LEVEL,SMTP_HOST,SMTP_FROM,SMTP_PORT,SMTP_SECURITY,SMTP_USERNAME,SMTP_PASSWORD"
script: |
set -e
cd /root/netrunner-data
mkdir -p data
cat > .env <<EOF
VW_DB_USER=${VW_DB_USER}
VW_DB_PASSWORD=${VW_DB_PASSWORD}
VW_DB_NAME=${VW_DB_NAME}
VAULTWARDEN_DOMAIN=${VAULTWARDEN_DOMAIN}
VAULTWARDEN_SIGNUPS_ALLOWED=${VAULTWARDEN_SIGNUPS_ALLOWED}
VAULTWARDEN_ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
VAULTWARDEN_LOG_LEVEL=${VAULTWARDEN_LOG_LEVEL}
SMTP_HOST=${SMTP_HOST}
SMTP_FROM=${SMTP_FROM}
SMTP_PORT=${SMTP_PORT}
SMTP_SECURITY=${SMTP_SECURITY}
SMTP_USERNAME=${SMTP_USERNAME}
SMTP_PASSWORD=${SMTP_PASSWORD}
EOF
chmod 600 .env
docker compose pull
docker compose up -d --remove-orphans
docker image prune -f
echo "✅ netrunner-data synchronized."
env:
VW_DB_USER: ${{ vars.DATA_VW_DB_USER }}
VW_DB_PASSWORD: ${{ secrets.DATA_VW_DB_PASSWORD }}
VW_DB_NAME: ${{ vars.DATA_VW_DB_NAME }}
VAULTWARDEN_DOMAIN: ${{ vars.VAULTWARDEN_DOMAIN }}
VAULTWARDEN_SIGNUPS_ALLOWED: ${{ vars.VAULTWARDEN_SIGNUPS_ALLOWED }}
VAULTWARDEN_ADMIN_TOKEN: ${{ secrets.VAULTWARDEN_ADMIN_TOKEN }}
VAULTWARDEN_LOG_LEVEL: ${{ vars.VAULTWARDEN_LOG_LEVEL }}
SMTP_HOST: ${{ vars.VAULTWARDEN_SMTP_HOST }}
SMTP_FROM: ${{ vars.VAULTWARDEN_SMTP_FROM }}
SMTP_PORT: ${{ vars.VAULTWARDEN_SMTP_PORT }}
SMTP_SECURITY: ${{ vars.VAULTWARDEN_SMTP_SECURITY }}
SMTP_USERNAME: ${{ vars.VAULTWARDEN_SMTP_USERNAME }}
SMTP_PASSWORD: ${{ secrets.VAULTWARDEN_SMTP_PASSWORD }}