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 run: | apk add --no-cache git git clone http://oauth2:${{ secrets.GIT_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