82 lines
3.5 KiB
YAML
82 lines
3.5 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
|
|
CLEAN_TOKEN=$(printf '%s' "${TOKEN}" | tr -d '\r\n')
|
|
git clone "http://oauth2:${CLEAN_TOKEN}@gitea:3000/AVTEX/XFlow.git" .
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '22'
|
|
|
|
- name: Install dependencies
|
|
run: npm install
|
|
|
|
- name: Build Nuxt
|
|
run: |
|
|
npm run build
|
|
npx prisma generate
|
|
mkdir -p .output/server/node_modules/@prisma
|
|
cp -r node_modules/.prisma .output/server/node_modules/
|
|
cp -r node_modules/@prisma/* .output/server/node_modules/@prisma/
|
|
cp -r node_modules/pg .output/server/node_modules/
|
|
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: Deploy to server
|
|
run: |
|
|
apk add --no-cache docker-cli docker-compose
|
|
# Подготовка папок в новой структуре
|
|
mkdir -p /root/projects/xflow/.output /root/projects/xflow/prisma /root/projects/xflow/node_modules
|
|
cp -r .output/. /root/projects/xflow/.output/
|
|
cp -r prisma/. /root/projects/xflow/prisma/
|
|
cp -r node_modules/. /root/projects/xflow/node_modules/
|
|
cp package.json /root/projects/xflow/package.json
|
|
cp prisma.config.ts /root/projects/xflow/prisma.config.ts
|
|
|
|
# Перезапуск конкретного сервиса в рамках общей инфраструктуры
|
|
# Мы используем мастер-файл из корня проектов
|
|
docker stop xflow_crm 2>/dev/null || true
|
|
docker rm xflow_crm 2>/dev/null || true
|
|
docker compose -f /root/projects/docker-compose.yml up -d --no-deps xflow_crm
|
|
|
|
echo "⏳ Waiting for container to start..."
|
|
sleep 5
|
|
# Миграции с использованием новой БД xflow_crm_db
|
|
docker exec xflow_crm sh -c "cd /app && export DATABASE_URL=postgresql://admin:${POSTGRES_PASSWORD}@xflow_db:5432/xflow_crm_db && npx prisma migrate deploy --config prisma.config.ts && npx prisma db seed"
|
|
echo "✅ XFlow CRM deployed at $(date)"
|
|
env:
|
|
FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
|
|
FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
|
|
FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
|
|
FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
|
|
FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.FIREBASE_MESSAGING_SENDER_ID }}
|
|
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 }}
|