84 lines
2.5 KiB
YAML
84 lines
2.5 KiB
YAML
name: Deploy XFlow (AVTEX/Projects)
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
server-url: http://gitea:3000
|
|
token: ${{ secrets.GIT_TOKEN }}
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '20'
|
|
cache: 'npm'
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build Nuxt
|
|
run: npm run build
|
|
env:
|
|
NUXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
|
|
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
|
|
NUXT_PUBLIC_FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
|
|
NUXT_PUBLIC_FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
|
|
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.FIREBASE_MESSAGING_SENDER_ID }}
|
|
|
|
- name: Setup SSH with jump host
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
cat >> ~/.ssh/config << EOF
|
|
Host jumphost
|
|
HostName ${{ secrets.JUMP_HOST }}
|
|
User ${{ secrets.JUMP_USER }}
|
|
IdentityFile ~/.ssh/id_rsa
|
|
StrictHostKeyChecking no
|
|
Host target
|
|
HostName ${{ secrets.DEPLOY_HOST }}
|
|
User ${{ secrets.DEPLOY_USER }}
|
|
ProxyJump jumphost
|
|
IdentityFile ~/.ssh/id_rsa
|
|
StrictHostKeyChecking no
|
|
EOF
|
|
|
|
- name: Copy .output to server
|
|
run: |
|
|
rsync -az --delete .output/ target:/opt/xflow/.output/
|
|
rsync -az prisma/ target:/opt/xflow/prisma/
|
|
rsync -az package.json target:/opt/xflow/package.json
|
|
|
|
- name: Run migrations & restart container
|
|
run: |
|
|
ssh target << 'ENDSSH'
|
|
cd /opt/xflow
|
|
|
|
# Запустить миграции Prisma
|
|
docker run --rm \
|
|
--network infra \
|
|
-e DATABASE_URL="$DATABASE_URL" \
|
|
-v /opt/xflow/prisma:/app/prisma \
|
|
-v /opt/xflow/node_modules:/app/node_modules \
|
|
-w /app \
|
|
node:20-alpine \
|
|
sh -c "npx prisma migrate deploy"
|
|
|
|
# Перезапустить xflow контейнер
|
|
cd /opt/xflow
|
|
docker compose up -d --force-recreate xflow
|
|
|
|
echo "✅ XFlow deployed at $(date)"
|
|
ENDSSH
|