name: Local Build and Deploy on: push: branches: - main jobs: deploy: runs-on: shell steps: - name: Run Deploy Scripts Locally run: | set -e # 1. Deployment lock & init exec 9>/var/tmp/epic_web_control_deploy.lock flock -n 9 || { echo "ERROR: Another deployment is already running! Cancelling."; exit 1; } error_handler() { echo "!!! DEPLOYMENT FAILED on line $1 !!!" >&2 sudo systemctl restart atom-nexst.service || true exit 1 } trap 'error_handler $LINENO' ERR # 2. Zorg dat de opslagmappen bestaan sudo mkdir -p /var/www/atom-media/uploads /var/www/atom-media/imaging /var/www/atom-media/public_assets sudo chown -R www-data:www-data /var/www/atom-media sudo chmod -R 775 /var/www/atom-media # 3. Cleanup & Git Sync cd /var/www/atom-nexst/ git fetch origin --prune git reset --hard origin/main git clean -fd -e .env -e .env.local -e .env.production -e .env*.local -e .next # 4. Build pnpm install --frozen-lockfile pnpm db:migrate pnpm prisma:generate pnpm build # 5. SYNC STANDALONE (De 'Force Overlay' Methode) echo "Syncing standalone bundle..." # Basis files voor standalone cp -r .next/static .next/standalone/.next/ cp -r node_modules/@prisma .next/standalone/node_modules/ 2>/dev/null || true cp .env .next/standalone/.env # Kopieer repo public map (statische broncode) cp -rf public/. .next/standalone/public/ # FORCE OVERLAY: Koppel de media mappen direct # We verwijderen de kopieën en leggen links naar de veilige opslag rm -rf .next/standalone/public/uploads rm -rf .next/standalone/public/imaging rm -rf .next/standalone/public/public_assets ln -sfn /var/www/atom-media/uploads .next/standalone/public/uploads ln -sfn /var/www/atom-media/imaging .next/standalone/public/imaging ln -sfn /var/www/atom-media/public_assets .next/standalone/public/public_assets # DIT IS DE FIX VOOR JE FAVICON EN LOGO: # Kopieer ALLES uit je veilige opslag direct naar de public folder van standalone # Zo kan Next.js ze vinden alsof ze in de code staan cp -rf /var/www/atom-media/public_assets/* .next/standalone/public/ # 6. Permissions & Restart sudo chown -R www-data:www-data .next/standalone/ sudo systemctl restart atom-nexst.service echo "--- Deployment successfully completed ---"