name: Deploy Jody's App on: push: branches: - main jobs: build-and-deploy: runs-on: vps-host steps: - name: Checkout uses: actions/checkout@v3 - name: Install Frontend Dependencies run: npm ci - name: Build Frontend run: npm run build - name: Install Contact API Dependencies run: npm ci --prefix contact-api - name: Build Contact API run: npm run build --prefix contact-api - name: Sync Frontend Files run: | mkdir -p /var/www/jody/dist rm -rf /var/www/jody/dist/* cp -r dist/* /var/www/jody/dist/ - name: Debug runner identity run: | whoami id ls -ld /var/www/jody/contact-api /var/www/jody/contact-api/dist || true - name: Sync Contact API Runtime Files run: | mkdir -p /var/www/jody/contact-api rm -rf /var/www/jody/contact-api/dist cp -r contact-api/dist /var/www/jody/contact-api/ cp contact-api/package.json /var/www/jody/contact-api/ cp contact-api/package-lock.json /var/www/jody/contact-api/ - name: Install Contact API Production Dependencies run: | cd /var/www/jody/contact-api npm ci --omit=dev - name: Restart Contact API run: | systemctl restart jody-contact-api systemctl is-active --quiet jody-contact-api - name: Health Check Contact API run: curl --fail --silent http://127.0.0.1:8787/health