diff --git a/scripts/deploy-github.sh b/scripts/deploy-github.sh index 3328a4c..e31edfb 100644 --- a/scripts/deploy-github.sh +++ b/scripts/deploy-github.sh @@ -114,7 +114,7 @@ rollback() { echo if [ -d "$BACKUP" ]; then echo "Backup PRE disponible en: $BACKUP" - echo "Las migraciones son forward-only; database-before.dump queda disponible para restauración manual si hiciera falta." + echo "database-before.dump y asset-media-before.tar.gz permiten una restauración manual integral si hiciera falta." else echo "No fue necesario crear backup PRE: el fallo ocurrió durante el preflight del candidato, antes de tocar producción." fi @@ -207,9 +207,15 @@ install -m 600 .env "$BACKUP/.env" git rev-parse HEAD > "$BACKUP/previous.sha" printf '%s\n' "$TARGET_SHA" > "$BACKUP/target.sha" docker compose ps -a > "$BACKUP/docker-before.txt" + +echo "Respaldando volumen de fotos/importaciones..." +docker compose run --rm --no-deps --user root \ + -v "$BACKUP:/backup" \ + api sh -lc 'tar -czf /backup/asset-media-before.tar.gz -C /app/storage/asset-media .' + ( cd "$BACKUP" - sha256sum database-before.dump source-before.tar.gz .env previous.sha target.sha docker-before.txt > SHA256SUMS.txt + sha256sum database-before.dump source-before.tar.gz asset-media-before.tar.gz .env previous.sha target.sha docker-before.txt > SHA256SUMS.txt sha256sum -c SHA256SUMS.txt ) chmod 600 "$BACKUP"/* "$BACKUP/.env" 2>/dev/null || true @@ -228,11 +234,31 @@ docker compose build api migrate web /dev/null | wc -l | tr -d " ")" + echo "files_before=$before" + for path in "$ROOT"/* "$ROOT"/.[!.]* "$ROOT"/..?*; do + [ -e "$path" ] || continue + rm -rf -- "$path" + done + mkdir -p "$ROOT/imports" + chown -R node:node "$ROOT" + after="$(find "$ROOT" -type f 2>/dev/null | wc -l | tr -d " ")" + echo "files_after=$after" + [ "$after" = "0" ] +' | tee "$BACKUP/media-clean.txt" +grep -Fq 'files_after=0' "$BACKUP/media-clean.txt" + PHASE="recreate" echo echo "========== RECREATE API + WEB ==========" @@ -284,7 +310,7 @@ git rev-parse HEAD > "$BACKUP/deployed.sha" printf 'API=%s\nWEB=%s\n' "$EXPECTED_API_VERSION" "$EXPECTED_WEB_VERSION" > "$BACKUP/deployed-versions.txt" ( cd "$BACKUP" - sha256sum database-after.dump deployed.sha deployed-versions.txt health.json migrations.txt docker-after.txt >> SHA256SUMS.txt + sha256sum database-after.dump deployed.sha deployed-versions.txt health.json migrations.txt media-clean.txt docker-after.txt >> SHA256SUMS.txt sha256sum -c SHA256SUMS.txt ) chmod 600 "$BACKUP"/* "$BACKUP/.env" 2>/dev/null || true