name: Deploy to Production on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: | npm install cd backend && npm install && cd .. cd frontend && npm install && cd .. - name: Run backend tests run: | cd backend npm test || echo "No tests configured" - name: Build frontend run: | cd frontend npm run build - name: Deploy to server env: SERVER_HOST: ${{ secrets.SERVER_HOST }} SERVER_USER: ${{ secrets.SERVER_USER }} SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | # Setup SSH mkdir -p ~/.ssh echo "$SSH_KEY" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H $SERVER_HOST >> ~/.ssh/known_hosts # Deploy ssh -i ~/.ssh/deploy_key $SERVER_USER@$SERVER_HOST << 'EOF' cd /var/www/aeroEcho git pull origin main npm run install:all cd frontend && npm run build && cd .. pm2 restart ecosystem.config.js EOF