Files
Avtex/.gitea/workflows/deploy.yml
T

88 lines
2.6 KiB
YAML

name: Deploy XFlow (AVTEX/Projects)
on:
push:
branches:
- master
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
shell: sh
steps:
- name: Checkout
shell: sh
env:
TOKEN: ${{ secrets.GIT_TOKEN }}
run: |
apk add --no-cache git
git clone "http://oauth2:${TOKEN}@gitea:3000/AVTEX/XFlow.git" .
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- 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