1
0
forked from BRT/arc

Add support for -prod configuration in build_x64.bat, including API and manifest switching. Replace SCP with CURL for update uploads.

This commit is contained in:
slava 2026-05-30 14:05:32 +05:00
parent f179c581d0
commit 92e754ef6b
2 changed files with 45 additions and 9 deletions

View File

@ -38,11 +38,41 @@ if "!FLAG_UPVERSION!"=="1" (
echo Version: !CURRENT_VERSION!
)
REM При -prod добавляем prod в имя архива
set PROD_SUFFIX=
if "!FLAG_PROD!"=="1" set PROD_SUFFIX=_prod
REM Канал обновлений и суффикс имени архива по флагу -prod
if "!FLAG_PROD!"=="1" (
set CHANNEL=prod
set PROD_SUFFIX=_prod
) else (
set CHANNEL=test
set PROD_SUFFIX=
)
set ZIP_NAME=ARC_x64_!CURRENT_VERSION!!PROD_SUFFIX!.zip
REM Переключаем apiBase по флагу -prod: -prod → apiBaseProd, иначе apiBaseTest.
REM Значения берём из самого config.ini, переписываем строку apiBase= (не трогая
REM apiBaseTest=/apiBaseProd= и закомментированный #apiBase=).
for /f "tokens=2 delims==" %%V in ('findstr /b /i "apiBaseTest=" "%CONFIG_FILE%"') do set API_TEST=%%V
for /f "tokens=2 delims==" %%V in ('findstr /b /i "apiBaseProd=" "%CONFIG_FILE%"') do set API_PROD=%%V
if "!FLAG_PROD!"=="1" (
set API_TARGET=!API_PROD!
) else (
set API_TARGET=!API_TEST!
)
powershell -NoProfile -Command "(Get-Content '!CONFIG_FILE!') -replace '^apiBase=.*$', 'apiBase=!API_TARGET!' | Set-Content '!CONFIG_FILE!'"
echo apiBase set to: !API_TARGET!
REM Переключаем manifestUrl по флагу -prod (канал обновлений). Значения берём из
REM config.ini, переписываем строку manifestUrl= (не трогая manifestUrlTest=/Prod=).
for /f "tokens=2 delims==" %%V in ('findstr /b /i "manifestUrlTest=" "%CONFIG_FILE%"') do set MAN_TEST=%%V
for /f "tokens=2 delims==" %%V in ('findstr /b /i "manifestUrlProd=" "%CONFIG_FILE%"') do set MAN_PROD=%%V
if "!FLAG_PROD!"=="1" (
set MAN_TARGET=!MAN_PROD!
) else (
set MAN_TARGET=!MAN_TEST!
)
powershell -NoProfile -Command "(Get-Content '!CONFIG_FILE!') -replace '^manifestUrl=.*$', 'manifestUrl=!MAN_TARGET!' | Set-Content '!CONFIG_FILE!'"
echo manifestUrl set to: !MAN_TARGET!
echo === [1/5] Configuring CMake for x64 Release ===
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
cd /d "%BUILD_DIR%"
@ -77,10 +107,12 @@ if %ERRORLEVEL% neq 0 (
echo === [5/5] Uploading to update server and sending link to Telegram ===
REM Целевой сервер обновлений (нужен настроенный SSH-ключ для root@%UPDATE_HOST%).
REM Сервер обновлений: загрузка по HTTP PUT (WebDAV nginx) с Basic-Auth — без SSH.
set UPDATE_HOST=142.93.102.40
set UPDATE_DIR=/var/www/updates
set DOWNLOAD_URL=http://%UPDATE_HOST%/updates/%ZIP_NAME%
set UPDATE_USER=arcdeploy
set UPDATE_PASS=57d5f7098b9347ee36895f865596b9a39f75
set UPDATE_BASE=http://%UPDATE_HOST%/updates/%CHANNEL%
set DOWNLOAD_URL=%UPDATE_BASE%/%ZIP_NAME%
REM SHA256 архива — для проверки целостности на клиенте.
for /f "delims=" %%H in ('powershell -NoProfile -Command "(Get-FileHash '%PROJECT_DIR%%ZIP_NAME%' -Algorithm SHA256).Hash.ToLower()"') do set ZIP_SHA256=%%H
@ -88,7 +120,7 @@ echo SHA256: !ZIP_SHA256!
REM Сначала заливаем zip, потом манифест — чтобы клиент не увидел version.json
REM на ещё не загруженный архив.
scp "%PROJECT_DIR%%ZIP_NAME%" root@%UPDATE_HOST%:%UPDATE_DIR%/%ZIP_NAME%
curl -f -s -S -T "%PROJECT_DIR%%ZIP_NAME%" -u "%UPDATE_USER%:%UPDATE_PASS%" "%UPDATE_BASE%/%ZIP_NAME%"
if %ERRORLEVEL% neq 0 (
echo ERROR: Failed to upload archive to update server
exit /b 1
@ -97,7 +129,7 @@ if %ERRORLEVEL% neq 0 (
REM Генерируем version.json (UTF-8 без BOM — иначе QJsonDocument::fromJson падает)
REM и заливаем последним.
powershell -NoProfile -Command "$j = @{ latestVersion='!CURRENT_VERSION!'; zipUrl='!DOWNLOAD_URL!'; sha256='!ZIP_SHA256!'; minVersion='1.0.0'; notes='Обновление ARC'; mandatory=$false } | ConvertTo-Json; [System.IO.File]::WriteAllText('%PROJECT_DIR%version.json', $j, (New-Object System.Text.UTF8Encoding($false)))"
scp "%PROJECT_DIR%version.json" root@%UPDATE_HOST%:%UPDATE_DIR%/version.json
curl -f -s -S -T "%PROJECT_DIR%version.json" -u "%UPDATE_USER%:%UPDATE_PASS%" "%UPDATE_BASE%/version.json"
if %ERRORLEVEL% neq 0 (
echo ERROR: Failed to upload version.json to update server
exit /b 1

View File

@ -10,6 +10,8 @@ dbPath=./database/app_data.db
[net]
apiBase=http://93.183.75.134:8005
apiBaseTest=http://93.183.75.134:8005
apiBaseProd=http://78.140.243.128:8000
#apiBase=http://127.0.0.1:8888
pathAuthLogin=/api/v1/auth/login
pathAuthRefresh=/api/v1/auth/refresh_token
@ -25,7 +27,9 @@ monitoringBase=http://142.93.102.40:8080
monitoringToken=509b91592749959b9ff56f9ed9189e5b3e91e1260003f63c477255e1c187298a
[update]
manifestUrl=http://142.93.102.40/updates/version.json
manifestUrl=http://142.93.102.40/updates/test/version.json
manifestUrlTest=http://142.93.102.40/updates/test/version.json
manifestUrlProd=http://142.93.102.40/updates/prod/version.json
[black]
android_package_name=app.blackwallet.ar