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: 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 }}