#!/bin/bash # ───────────────────────────────────────────────────────────── # DummyBot – deploy runner (vive en el repo) # Llamado por el webhook de Gitea. Hace git pull + composer + # npm + migrate + cache clear + restart. # # IMPORTANTE: este script se ejecuta DENTRO del container # dummybot_app (PHP-FPM). Por tanto: # - git, composer, npm están disponibles (Dockerfile los instala) # - artisan funciona con `php artisan` # - `docker compose` se puede invocar contra el socket del host # ───────────────────────────────────────────────────────────── set -e BRANCH="${BRANCH:-main}" APP_DIR="${APP_DIR:-/var/www}" cd "$APP_DIR" echo "═══════════════════════════════════════════" echo " DummyBot deploy — $(date -u +%Y-%m-%dT%H:%M:%SZ)" echo " Branch: $BRANCH" echo " App dir: $APP_DIR" echo "═══════════════════════════════════════════" echo "→ git fetch + reset" git fetch origin "$BRANCH" 2>&1 | tail -3 git reset --hard "origin/$BRANCH" 2>&1 | tail -3 NEW_COMMIT=$(git rev-parse --short HEAD) echo "HEAD: $NEW_COMMIT" echo "→ composer install" composer install --no-dev --no-interaction --no-progress --optimize-autoloader 2>&1 | tail -3 echo "→ npm install + build" if [ -f package-lock.json ]; then npm ci --no-audit --no-fund 2>&1 | tail -3 else npm install --no-audit --no-fund 2>&1 | tail -3 fi npm run build 2>&1 | tail -3 || echo " (build skipped)" echo "→ artisan migrate" php artisan migrate --force 2>&1 | tail -5 echo "→ artisan cache:clear" php artisan config:clear 2>&1 | tail -1 php artisan route:clear 2>&1 | tail -1 php artisan view:clear 2>&1 | tail -1 php artisan event:clear 2>&1 | tail -1 php artisan optimize 2>&1 | tail -3 echo "→ restart php-fpm (graceful)" # Recargar el FPM para que coja el nuevo código if command -v kill &> /dev/null; then kill -USR2 1 2>&1 || true fi echo "═══════════════════════════════════════════" echo " Deploy OK: $NEW_COMMIT" echo "═══════════════════════════════════════════"