diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 7fe2ac2..2aee2dc 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -26,7 +26,11 @@ jobs: uses: actions/checkout@v4 - name: Build (npm ci + vite build) + shell: bash run: | + # better-sqlite3 (v12) requiere C++20; el GCC 8 del sistema (AlmaLinux 8) no lo soporta. + # gcc-toolset-12 (GCC 12) ya está instalado en /opt/rh. + source /opt/rh/gcc-toolset-12/enable 2>/dev/null || echo "WARN: gcc-toolset-12 no encontrado" npm ci npm run build diff --git a/scripts/deploy.sh b/scripts/deploy.sh index e4c71eb..8d2cfbe 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -58,9 +58,18 @@ rsync -a --delete "$ROOT/server/" "$DEST/server/" cp -a "$ROOT/package.json" "$ROOT/package-lock.json" "$DEST/" # localesp.db se PRESERVA (datos de usuarios). No se toca aquí. -# --- 2. dependencias de producción (express + better-sqlite3) --- +# --- 2. dependencias de producción --- +# Reutiliza los node_modules ya compilados por el workflow (better-sqlite3 v12 exige +# C++20, GCC 12). Copiar + npm prune evita recompilar en cada despliegue. +# Fallback a npm ci --omit=dev si se ejecuta a mano sin build previo. log "instalando dependencias (prod)" -( cd "$DEST" && npm ci --omit=dev --no-audit --no-fund ) +if [ -d "$ROOT/node_modules" ]; then + mkdir -p "$DEST/node_modules" + rsync -a --delete "$ROOT/node_modules/" "$DEST/node_modules/" + ( cd "$DEST" && npm prune --omit=dev --no-audit --no-fund ) +else + ( cd "$DEST" && npm ci --omit=dev --no-audit --no-fund ) +fi # --- 3. systemd unit --- log "escribiendo unit $UNIT (PORT=$PORT)"