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:
parent
f179c581d0
commit
92e754ef6b
@ -38,11 +38,41 @@ if "!FLAG_UPVERSION!"=="1" (
|
|||||||
echo Version: !CURRENT_VERSION!
|
echo Version: !CURRENT_VERSION!
|
||||||
)
|
)
|
||||||
|
|
||||||
REM При -prod добавляем prod в имя архива
|
REM Канал обновлений и суффикс имени архива по флагу -prod
|
||||||
set PROD_SUFFIX=
|
if "!FLAG_PROD!"=="1" (
|
||||||
if "!FLAG_PROD!"=="1" set PROD_SUFFIX=_prod
|
set CHANNEL=prod
|
||||||
|
set PROD_SUFFIX=_prod
|
||||||
|
) else (
|
||||||
|
set CHANNEL=test
|
||||||
|
set PROD_SUFFIX=
|
||||||
|
)
|
||||||
set ZIP_NAME=ARC_x64_!CURRENT_VERSION!!PROD_SUFFIX!.zip
|
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 ===
|
echo === [1/5] Configuring CMake for x64 Release ===
|
||||||
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
|
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
|
||||||
cd /d "%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 ===
|
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_HOST=142.93.102.40
|
||||||
set UPDATE_DIR=/var/www/updates
|
set UPDATE_USER=arcdeploy
|
||||||
set DOWNLOAD_URL=http://%UPDATE_HOST%/updates/%ZIP_NAME%
|
set UPDATE_PASS=57d5f7098b9347ee36895f865596b9a39f75
|
||||||
|
set UPDATE_BASE=http://%UPDATE_HOST%/updates/%CHANNEL%
|
||||||
|
set DOWNLOAD_URL=%UPDATE_BASE%/%ZIP_NAME%
|
||||||
|
|
||||||
REM SHA256 архива — для проверки целостности на клиенте.
|
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
|
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 Сначала заливаем zip, потом манифест — чтобы клиент не увидел version.json
|
||||||
REM на ещё не загруженный архив.
|
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 (
|
if %ERRORLEVEL% neq 0 (
|
||||||
echo ERROR: Failed to upload archive to update server
|
echo ERROR: Failed to upload archive to update server
|
||||||
exit /b 1
|
exit /b 1
|
||||||
@ -97,7 +129,7 @@ if %ERRORLEVEL% neq 0 (
|
|||||||
REM Генерируем version.json (UTF-8 без BOM — иначе QJsonDocument::fromJson падает)
|
REM Генерируем version.json (UTF-8 без BOM — иначе QJsonDocument::fromJson падает)
|
||||||
REM и заливаем последним.
|
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)))"
|
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 (
|
if %ERRORLEVEL% neq 0 (
|
||||||
echo ERROR: Failed to upload version.json to update server
|
echo ERROR: Failed to upload version.json to update server
|
||||||
exit /b 1
|
exit /b 1
|
||||||
|
|||||||
@ -10,6 +10,8 @@ dbPath=./database/app_data.db
|
|||||||
|
|
||||||
[net]
|
[net]
|
||||||
apiBase=http://93.183.75.134:8005
|
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
|
#apiBase=http://127.0.0.1:8888
|
||||||
pathAuthLogin=/api/v1/auth/login
|
pathAuthLogin=/api/v1/auth/login
|
||||||
pathAuthRefresh=/api/v1/auth/refresh_token
|
pathAuthRefresh=/api/v1/auth/refresh_token
|
||||||
@ -25,7 +27,9 @@ monitoringBase=http://142.93.102.40:8080
|
|||||||
monitoringToken=509b91592749959b9ff56f9ed9189e5b3e91e1260003f63c477255e1c187298a
|
monitoringToken=509b91592749959b9ff56f9ed9189e5b3e91e1260003f63c477255e1c187298a
|
||||||
|
|
||||||
[update]
|
[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]
|
[black]
|
||||||
android_package_name=app.blackwallet.ar
|
android_package_name=app.blackwallet.ar
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user