name: Deploy to VPS on: push: branches: [main] workflow_dispatch: permissions: contents: read jobs: deploy: runs-on: ubuntu-latest name: Build & Deploy steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Build site run: npm run build - name: Setup SSH key run: | mkdir -p ~/.ssh echo "${{ secrets.VPS_SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H "${{ secrets.VPS_HOST }}" >> ~/.ssh/known_hosts - name: Deploy via rsync run: | rsync -avz --delete \ -e "ssh -i ~/.ssh/deploy_key" \ ./dist/ \ ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }}:/var/www/carlospalanca.es/ - name: Reload nginx run: | ssh -i ~/.ssh/deploy_key ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} \ "nginx -t && sudo systemctl reload nginx"