build-proserve-zip.bat : zippe une release PROSERVE prête à uploader

Usage : build-proserve-zip.bat 1.5.3
  → lit version\proserve-1.5.3\
  → produit version\proserve-1.5.3.zip (binaires UE5 + _migrations + _report)
  → affiche taille + SHA-256

Auto-détecte 7-Zip s'il est installé (multi-thread, 3-5x plus rapide sur
14 Go). Fallback sur PowerShell Compress-Archive (mono-thread) sinon.

Sans argument : liste les versions disponibles dans version\.
Avec checks : warn si _migrations/ ou _report/ ou PROSERVE_UE_5_5.exe
manquent (continue après 5s).

Sortie pédagogique à la fin : prochaines étapes (SFTP upload + actions
backoffice à effectuer).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 10:12:58 +02:00
parent c706d09e72
commit d09deaddb7

137
build-proserve-zip.bat Normal file
View File

@@ -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 ^<version^>
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