diff --git a/build-proserve-zip.bat b/build-proserve-zip.bat new file mode 100644 index 0000000..faffc93 --- /dev/null +++ b/build-proserve-zip.bat @@ -0,0 +1,137 @@ +@echo off +REM ======================================================================== +REM build-proserve-zip.bat +REM Crée le ZIP de release d'une version PROSERVE prêt à uploader sur OVH. +REM +REM Usage : +REM build-proserve-zip.bat 1.5.3 +REM +REM Le script : +REM 1. Lit version\proserve-X.Y.Z\ (binaires UE5 + _migrations\ + _report\) +REM 2. Compresse en version\proserve-X.Y.Z.zip +REM 3. Affiche taille + SHA-256 (à recopier dans le backoffice si tu veux +REM eviter le hash automatique côté serveur, sinon laisse le serveur le +REM faire au moment du « Hasher + signer ») +REM +REM Outils : +REM - 7-Zip si installé (multi-threading, ~3-5x plus rapide sur 14 Go) +REM - PowerShell Compress-Archive en fallback (mono-thread, lent) +REM +REM Sortie : version\proserve-X.Y.Z.zip à uploader vers +REM www/PS_Launcher/builds/proserve-X.Y.Z.zip via SFTP. +REM ======================================================================== + +setlocal EnableDelayedExpansion + +if "%~1"=="" ( + echo. + echo Usage : build-proserve-zip.bat ^ + echo Exemple : build-proserve-zip.bat 1.5.3 + echo. + echo Versions disponibles dans version\ : + for /D %%D in ("%~dp0version\proserve-*") do echo %%~nxD + echo. + exit /b 1 +) + +set "VERSION=%~1" +set "REPO=%~dp0" +set "SRC=%REPO%version\proserve-%VERSION%" +set "OUT=%REPO%version\proserve-%VERSION%.zip" + +if not exist "%SRC%" ( + echo [ERREUR] Dossier source introuvable : %SRC% + echo Liste des versions disponibles : + for /D %%D in ("%REPO%version\proserve-*") do echo %%~nxD + exit /b 1 +) + +REM Sanity-check que les sous-dossiers attendus sont là +if not exist "%SRC%\PROSERVE_UE_5_5.exe" ( + echo [WARN] %SRC%\PROSERVE_UE_5_5.exe absent — c'est normal ? Continuer dans 5s, Ctrl+C pour annuler... + timeout /t 5 >nul +) +if not exist "%SRC%\_migrations" ( + echo [WARN] %SRC%\_migrations\ absent — pas de migrations DB dans cette release. +) +if not exist "%SRC%\_report" ( + echo [WARN] %SRC%\_report\ absent — pas d'outil Report dans cette release. +) + +if exist "%OUT%" ( + echo [INFO] Suppression du zip existant : %OUT% + del /Q "%OUT%" +) + +REM ----- 7-Zip si disponible ----- +set "SEVENZIP=" +if exist "C:\Program Files\7-Zip\7z.exe" set "SEVENZIP=C:\Program Files\7-Zip\7z.exe" +if exist "C:\Program Files (x86)\7-Zip\7z.exe" set "SEVENZIP=C:\Program Files (x86)\7-Zip\7z.exe" + +echo. +echo ======================================================================== +echo Compression de proserve-%VERSION% (peut prendre 5-30 min selon la taille) +echo Source : %SRC% +echo Sortie : %OUT% +echo ======================================================================== +echo. + +if defined SEVENZIP ( + echo [INFO] Utilisation de 7-Zip multi-thread (rapide) + REM -tzip format ZIP standard ^(compatible avec ce que le launcher attend^) + REM -mx=5 compression normale ^(mx=9 ultra serait 2x plus lent pour ~5%% de gain^) + REM -mmt=on multi-thread + REM -bsp1 progress sur stderr + REM Le * en fin de chemin source = on zippe le CONTENU du dossier, pas le dossier lui-meme + "%SEVENZIP%" a -tzip -mx=5 -mmt=on -bsp1 "%OUT%" "%SRC%\*" + set "EXITCODE=!ERRORLEVEL!" +) else ( + echo [INFO] 7-Zip non trouve, fallback sur PowerShell Compress-Archive ^(lent^). + echo Pour accelerer, installe 7-Zip depuis https://www.7-zip.org/ + echo. + powershell -NoProfile -ExecutionPolicy Bypass -Command ^ + "Compress-Archive -Path '%SRC%\*' -DestinationPath '%OUT%' -CompressionLevel Optimal -Force" + set "EXITCODE=!ERRORLEVEL!" +) + +if !EXITCODE! NEQ 0 ( + echo. + echo [ECHEC] Compression echouee avec le code !EXITCODE!. + exit /b !EXITCODE! +) + +if not exist "%OUT%" ( + echo [ECHEC] Le fichier %OUT% n'a pas ete cree. + exit /b 1 +) + +echo. +echo ======================================================================== +echo [OK] Zip cree avec succes +echo ======================================================================== +echo. +echo Fichier : %OUT% +for %%I in ("%OUT%") do ( + set "SIZE=%%~zI" + echo Taille : !SIZE! octets ^(~%%~zI bytes^) +) + +echo. +echo Calcul du SHA-256 ^(peut prendre 30s-2min selon la taille^)... +powershell -NoProfile -Command ^ + "$h = (Get-FileHash '%OUT%' -Algorithm SHA256).Hash.ToLower(); Write-Host SHA-256 : $h" + +echo. +echo ======================================================================== +echo Prochaines etapes : +echo 1. SFTP upload vers : www/PS_Launcher/builds/proserve-%VERSION%.zip +echo 2. Backoffice -^> Versions -^> verifier que l'entree v%VERSION% existe +echo ^(sinon ajoute-la avec date d'expiration min_license_date^) +echo 3. Cliquer ligne v%VERSION% -^> bouton "Hasher cette version" +echo ^(ou bouton global "Hasher les versions + signer"^) +echo 4. Le manifest est re-signe Ed25519, les clients verront la version +echo au prochain "Verifier les MAJ". +echo ======================================================================== +echo. +endlocal +pause