name: Deploy # Triggers only after CI passes on main — this is the gate on: workflow_run: workflows: [CI] branches: [main] types: [completed] jobs: deploy: name: Deploy to Production runs-on: ubuntu-latest environment: production # Only deploy when CI succeeded — not on failure or cancel if: github.event.workflow_run.conclusion == 'success' steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '22' cache: npm cache-dependency-path: package-lock.json - name: Install dependencies working-directory: . run: npm ci - name: Build backend working-directory: ./backend run: npm run build - name: Build frontend working-directory: ./frontend run: npm run build # TODO: replace with your actual deploy command, e.g.: # - rsync -av dist/ user@server:/var/www/app/ # - fly deploy # - vercel --prod # - aws s3 sync frontend/dist/ s3://your-bucket - name: Deploy run: echo "All tests passed — add deploy commands here"