Приватность публичного репо + выкл. проверку обновлений + релиз latest
- Убраны все машинно/инфра-специфичные данные из README/CODEMAP/скриптов/ workflows (хосты, IP, домен gitea -> github.server_url). - preconfigure: enable-check-update=N (выкл. проверку обновлений); подсказка «set up your own server» и так гаснет с override-сервером. - CI публикует exe/apk в Gitea Release `latest` (обновляется каждый прогон, стабильная ссылка) + версионный релиз на теге v*. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
name: build-android
|
||||
# Собирает преднастроенный RustDesk APK (arm64-v8a) на раннере `android` (= VM 118, где тулчейн
|
||||
# поднят provision-android.sh). Логику несёт scripts/build-android.sh — тот же путь, что и вручную.
|
||||
# Собирает преднастроенный RustDesk APK (arm64-v8a) на раннере `android` (тулчейн поднят
|
||||
# scripts/provision-android.sh). Всю логику несёт scripts/build-android.sh.
|
||||
#
|
||||
# Секреты репозитория: RUSTDESK_SERVER, RUSTDESK_PUB_KEY, (опц.) RUSTDESK_PRESET_PASSWORD.
|
||||
# Публикация: на теге v* APK прикрепляется к Gitea Release; иначе кладётся в ~/rd-ci-out.
|
||||
# Подпись: без flutter/android/key.properties APK debug-подписан (для теста); свой keystore -> релизная.
|
||||
# Публикация: APK кладётся в Gitea Release `latest` (обновляется каждый прогон), на теге v* — ещё и в версионный.
|
||||
# Подпись: без flutter/android/key.properties APK debug-подписан; свой keystore -> релизная подпись.
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -14,9 +14,6 @@ on:
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
env:
|
||||
REGISTRY_HOST: gitea.gusik.tech
|
||||
|
||||
jobs:
|
||||
android:
|
||||
runs-on: android
|
||||
@@ -36,28 +33,28 @@ jobs:
|
||||
RUSTDESK_PRESET_PASSWORD: ${{ secrets.RUSTDESK_PRESET_PASSWORD }}
|
||||
run: bash scripts/build-android.sh
|
||||
|
||||
- name: Attach APK to Gitea Release
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
- name: Publish APK to Gitea Release
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
GITHUB_REF_NAME: ${{ github.ref_name }}
|
||||
run: |
|
||||
set -e
|
||||
base="https://${REGISTRY_HOST}/api/v1/repos/${GITHUB_REPOSITORY}"
|
||||
base="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}"
|
||||
hdr="Authorization: token ${GITEA_TOKEN}"
|
||||
case "$GITHUB_REF" in
|
||||
refs/tags/v*) tag="$GITHUB_REF_NAME"; prerelease=false ;;
|
||||
*) tag="latest"; prerelease=true ;;
|
||||
esac
|
||||
curl -sf -X POST "$base/releases" -H "$hdr" -H 'Content-Type: application/json' \
|
||||
-d "{\"tag_name\":\"${GITHUB_REF_NAME}\",\"name\":\"${GITHUB_REF_NAME}\",\"draft\":false,\"prerelease\":false}" || true
|
||||
relid=$(curl -sf "$base/releases/tags/${GITHUB_REF_NAME}" -H "$hdr" | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])')
|
||||
-d "{\"tag_name\":\"$tag\",\"name\":\"$tag\",\"draft\":false,\"prerelease\":$prerelease,\"target_commitish\":\"master\"}" || true
|
||||
rel=$(curl -sf "$base/releases/tags/$tag" -H "$hdr")
|
||||
relid=$(printf '%s' "$rel" | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])')
|
||||
[ -n "$relid" ] || { echo "нет release id"; exit 1; }
|
||||
for f in dist/*.apk; do
|
||||
echo "Uploading $(basename "$f")..."
|
||||
curl -sf -X POST "$base/releases/$relid/assets?name=$(basename "$f")" -H "$hdr" -F "attachment=@$f"
|
||||
name=$(basename "$f")
|
||||
# удалить старый ассет с тем же именем (gitea не перезаписывает)
|
||||
aid=$(printf '%s' "$rel" | python3 -c "import sys,json;a=[x['id'] for x in json.load(sys.stdin).get('assets',[]) if x['name']=='$name'];print(a[0] if a else '')")
|
||||
[ -n "$aid" ] && curl -sf -X DELETE "$base/releases/$relid/assets/$aid" -H "$hdr" || true
|
||||
echo "Uploading $name -> release '$tag'..."
|
||||
curl -sf -X POST "$base/releases/$relid/assets?name=$name" -H "$hdr" -F "attachment=@$f"
|
||||
done
|
||||
|
||||
- name: Stash APK (dispatch)
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||
run: |
|
||||
mkdir -p ~/rd-ci-out
|
||||
cp dist/*.apk ~/rd-ci-out/
|
||||
ls -la ~/rd-ci-out/*.apk
|
||||
echo "Готово: $tag"
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
name: build-windows
|
||||
# Собирает преднастроенный RustDesk-клиент под Windows на раннере `windows` (= GUSIK-PC,
|
||||
# где тулчейн уже поднят: Rust 1.75, Flutter 3.24.5, vcpkg@пин, LLVM 15, rustfmt).
|
||||
# Всю логику несёт scripts/build-windows.ps1 — тот же путь, что и локально.
|
||||
# Собирает преднастроенный RustDesk-клиент под Windows на раннере `windows` (тулчейн уже поднят —
|
||||
# см. scripts/provision-windows.ps1). Всю логику несёт scripts/build-windows.ps1.
|
||||
#
|
||||
# Секреты репозитория (Settings -> Actions -> Secrets):
|
||||
# RUSTDESK_SERVER — хост hbbs (напр. rd.enersbyt.ru)
|
||||
# RUSTDESK_PUB_KEY — публичный ключ сервера (base64)
|
||||
# Публикация: на теге v* установщик прикрепляется к Gitea Release; иначе кладётся в S:\rd-ci\out.
|
||||
# RUSTDESK_SERVER, RUSTDESK_PUB_KEY, (опц.) RUSTDESK_PRESET_PASSWORD
|
||||
# Публикация: установщик кладётся в Gitea Release `latest` (обновляется каждый прогон — стабильная
|
||||
# ссылка на актуальный билд), а на теге v* — ещё и в версионный релиз.
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -16,11 +15,6 @@ on:
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
env:
|
||||
REGISTRY_HOST: gitea.gusik.tech
|
||||
# Клон rustdesk (+ многогиговый target/) — на S:, т.к. C: на раннере тесный.
|
||||
RUSTDESK_SRC_DIR: 'S:\rd-ci\rustdesk'
|
||||
|
||||
jobs:
|
||||
windows:
|
||||
runs-on: windows
|
||||
@@ -28,7 +22,6 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# rustup ставился с --no-modify-path — гарантируем cargo/rustup в PATH раннера.
|
||||
- name: Add cargo to PATH
|
||||
shell: pwsh
|
||||
run: Add-Content -Path $env:GITHUB_PATH -Value "$env:USERPROFILE\.cargo\bin"
|
||||
@@ -38,40 +31,31 @@ jobs:
|
||||
env:
|
||||
RUSTDESK_SERVER: ${{ secrets.RUSTDESK_SERVER }}
|
||||
RUSTDESK_PUB_KEY: ${{ secrets.RUSTDESK_PUB_KEY }}
|
||||
RUSTDESK_PRESET_PASSWORD: ${{ secrets.RUSTDESK_PRESET_PASSWORD }}
|
||||
run: pwsh -NoProfile -File scripts/build-windows.ps1
|
||||
|
||||
- name: Attach installer to Gitea Release
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
- name: Publish installer to Gitea Release
|
||||
shell: pwsh
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GITEA_API: ${{ env.REGISTRY_HOST }}
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
GITHUB_REF_NAME: ${{ github.ref_name }}
|
||||
run: |
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$base = "https://$($env:GITEA_API)/api/v1/repos/$($env:GITHUB_REPOSITORY)"
|
||||
$tag = $env:GITHUB_REF_NAME
|
||||
$base = "$env:GITHUB_SERVER_URL/api/v1/repos/$env:GITHUB_REPOSITORY"
|
||||
$isTag = $env:GITHUB_REF -like 'refs/tags/v*'
|
||||
$tag = if ($isTag) { $env:GITHUB_REF_NAME } else { 'latest' }
|
||||
$hdr = @{ Authorization = "token $env:GITEA_TOKEN" }
|
||||
$body = @{ tag_name = $tag; name = $tag; draft = $false; prerelease = $false } | ConvertTo-Json -Compress
|
||||
$body = @{ tag_name=$tag; name=$tag; draft=$false; prerelease=(-not $isTag); target_commitish='master' } | ConvertTo-Json -Compress
|
||||
try { Invoke-RestMethod -Method Post -Uri "$base/releases" -Headers $hdr -ContentType 'application/json' -Body $body | Out-Null } catch { }
|
||||
$rel = Invoke-RestMethod -Uri "$base/releases/tags/$tag" -Headers $hdr
|
||||
if (-not $rel.id) { throw "не удалось получить release id для $tag" }
|
||||
if (-not $rel.id) { throw "нет release id для $tag" }
|
||||
$files = Get-ChildItem -Path dist -Filter 'rustdesk-*-install.exe' -File
|
||||
if (-not $files) { throw "нет установщика в dist/" }
|
||||
foreach ($f in $files) {
|
||||
Write-Host "Uploading $($f.Name)..."
|
||||
foreach ($a in @($rel.assets | Where-Object { $_.name -eq $f.Name })) {
|
||||
try { Invoke-RestMethod -Method Delete -Uri "$base/releases/$($rel.id)/assets/$($a.id)" -Headers $hdr | Out-Null } catch { }
|
||||
}
|
||||
Write-Host "Uploading $($f.Name) -> release '$tag'..."
|
||||
& curl.exe -sf -X POST "$base/releases/$($rel.id)/assets?name=$($f.Name)" -H "Authorization: token $env:GITEA_TOKEN" -F "attachment=@$($f.FullName)"
|
||||
if ($LASTEXITCODE -ne 0) { throw "upload failed: $($f.Name)" }
|
||||
}
|
||||
Write-Host "Прикреплено к релизу $tag."
|
||||
|
||||
# Для ручного запуска (без тега) — сохранить установщик в стабильное место на раннере (GUSIK-PC).
|
||||
- name: Stash installer (dispatch)
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||
shell: pwsh
|
||||
run: |
|
||||
$out = 'S:\rd-ci\out'
|
||||
New-Item -ItemType Directory -Force $out | Out-Null
|
||||
Copy-Item dist\rustdesk-*-install.exe $out -Force
|
||||
Get-ChildItem $out\rustdesk-*-install.exe | ForEach-Object { Write-Host "Установщик: $($_.FullName) ($([math]::Round($_.Length/1MB,1)) MB)" }
|
||||
Write-Host "Готово: $tag"
|
||||
|
||||
@@ -45,9 +45,15 @@ pwsh -File scripts/build-windows.ps1 # provision сам доустанов
|
||||
|
||||
## Платформы
|
||||
|
||||
- **Windows** — локально на GUSIK-PC + CI-раннер `windows:host`.
|
||||
- **Android** — CI на build-VM 118 (NDK r28c, cargo-ndk 3.1.2), раздача APK как в GusVoice
|
||||
(gitea release + self-hosted F-Droid).
|
||||
- **Windows** — локально + CI-раннер с меткой `windows`.
|
||||
- **Android** (arm64-v8a) — CI-раннер с меткой `android` (NDK r28c, cargo-ndk 3.1.2); раздача APK
|
||||
через Gitea Release (+ self-hosted F-Droid опционально).
|
||||
|
||||
## Публикация артефактов
|
||||
|
||||
CI кладёт свежие `exe`/`apk` в Gitea Release **`latest`** (обновляется каждый прогон — стабильная ссылка
|
||||
на актуальный билд). На теге `v*` — дополнительно версионный релиз. Триггеры: тег `v*` или ручной запуск
|
||||
workflow. Значения сервера/ключа/пароля берутся из Actions secrets (в репозитории их нет).
|
||||
|
||||
## Лицензия
|
||||
|
||||
|
||||
+10
-10
@@ -11,10 +11,10 @@
|
||||
| `scripts/bump-upstream.sh` | `[<tag>|latest]` → тянет пины тулчейна из CI-конфигов целевого тега RustDesk (flutter-build.yml + bridge.yml) и переписывает `upstream.txt` (с диффом). Так бамп версии не разъезжается с Flutter/vcpkg/LLVM/FRB/NDK. |
|
||||
| `scripts/provision-windows.ps1` | Идемпотентно доводит тулчейн до пинов (Rust+rustfmt, Flutter, LLVM, vcpkg@коммит). Ставит только отсутствующее/несовпадающее. Зовётся из build-windows.ps1 (skip: `RD_SKIP_PROVISION=1`). |
|
||||
| `scripts/build-windows.ps1` | Оркестратор Windows-сборки: provision → load env → клон@пин → preconfigure → codegen → vcpkg install → build.py → портативный установщик → `dist/`. |
|
||||
| `scripts/provision-android.sh` | Идемпотентный Android-тулчейн на VM 118 под пины (Flutter/NDK/cargo-ndk/vcpkg/JDK17/apt). Пишет `~/dev/rd-android.env`. |
|
||||
| `scripts/provision-android.sh` | Идемпотентный Android-тулчейн на build-VM под пины (Flutter/NDK/cargo-ndk/vcpkg/JDK17/apt). Пишет `~/dev/rd-android.env`. |
|
||||
| `scripts/build-android.sh` | Оркестратор Android APK (arm64-v8a): env → клон@пин → preconfigure → build_android_deps → codegen → cargo-ndk → jniLibs → flutter apk → `dist/`. |
|
||||
| `config/server.env.example` | Шаблон значений. Реальный `config/server.env` — в `.gitignore`. |
|
||||
| `.gitea/workflows/` | CI: `build-windows.yaml` (раннер `windows`, ✅ зелёный), `build-android.yaml` (раннер `android`/VM 118). |
|
||||
| `.gitea/workflows/` | CI: `build-windows.yaml` (раннер `windows`, ✅ зелёный), `build-android.yaml` (раннер `android`/build-VM). |
|
||||
| `rustdesk/` | Клон апстрима (gitignored, создаётся сборкой). |
|
||||
| `dist/` | Готовые артефакты (gitignored). |
|
||||
|
||||
@@ -31,7 +31,7 @@ pub const RS_PUB_KEY: &str = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=";
|
||||
- Альтернатива без сборки (на будущее): переименовать официальный бинарь в
|
||||
`rustdesk-host=<server>,key=<pubkey>.exe` — конфиг читается из имени файла (`EXE_RENDEZVOUS_SERVER`).
|
||||
|
||||
## Windows toolchain (поднять один раз на GUSIK-PC)
|
||||
## Windows toolchain (поднять один раз на Windows-хосте)
|
||||
|
||||
Версии — из `upstream.txt` (пины из `flutter-build.yml@1.4.9`):
|
||||
- **Rust 1.75** — `rustup toolchain install 1.75`; в дереве клона `rustup override set 1.75`
|
||||
@@ -63,9 +63,9 @@ RUSTC_BOOTSTRAP=1 нужен, т.к. cargo-expand требует nightly-фич,
|
||||
`generated_bridge.dart`/`.freezed.dart` нет → flutter build падает `EventToUI_Event/RustdeskImpl isn't a type`.
|
||||
Поэтому проверять надо dart-файлы, не только rust.
|
||||
|
||||
### Грабля: portable-pack и python3-заглушка (GUSIK-PC)
|
||||
### Грабля: portable-pack и python3-заглушка (Windows-хосте)
|
||||
`build.py --flutter` в конце зовёт `python3 ./generate.py` для сборки портативного установщика. На
|
||||
GUSIK-PC `python3` = Microsoft Store-заглушка (реальный только `python` = 3.12) → шаг падает
|
||||
Windows-хосте `python3` = Microsoft Store-заглушка (реальный только `python` = 3.12) → шаг падает
|
||||
(«Python Error occurred when executing generate.py»), хотя **клиент к этому моменту уже собран** в
|
||||
`flutter/build/windows/x64/runner/Release/`. Поэтому `build-windows.ps1` зовёт `build.py --skip-portable-pack`,
|
||||
а установщик пакует отдельным шагом реальным `python generate.py` → `target/release/rustdesk-portable-packer.exe`
|
||||
@@ -75,10 +75,10 @@ GUSIK-PC `python3` = Microsoft Store-заглушка (реальный толь
|
||||
Стоковый Flutter 3.24.5 x64 engine отработал — `flutter build windows` собрался БЕЗ кастомного
|
||||
`windows-x64-release.zip` (тот нужен апстриму только для Win7). Для Win10/11 подмена не требуется.
|
||||
|
||||
## Android (VM 118, раннер `android`)
|
||||
## Android (build-VM, раннер `android`)
|
||||
Тулчейн: `scripts/provision-android.sh` (Flutter 3.24.5, NDK r28c от Google напрямую, cargo-ndk 3.1.2,
|
||||
Rust+aarch64-target, vcpkg@пин, FRB codegen; apt: clang/cmake/nasm/libssl-dev/openjdk-17). Пишет
|
||||
`~/dev/rd-android.env`. Ставит в `~/dev` (диск VM расширен до 84G, было 64G).
|
||||
`~/dev/rd-android.env`. Ставит в `~/dev` (нужно ~40 ГБ свободного места под vcpkg-android/target).
|
||||
Сборка: `scripts/build-android.sh` (arm64-v8a): клон@пин → preconfigure → `build_android_deps.sh arm64-v8a`
|
||||
(vcpkg под arm, ffmpeg/aom из исходников — долго) → FRB codegen (`--llvm-path` авто) → `cargo ndk build`
|
||||
→ jniLibs (.so+libc++_shared.so) → `flutter build apk` → `dist/rustdesk-<tag>-arm64.apk`.
|
||||
@@ -97,14 +97,14 @@ Rust+aarch64-target, vcpkg@пин, FRB codegen; apt: clang/cmake/nasm/libssl-dev
|
||||
|
||||
Публикация APK: `.gitea/workflows/build-android.yaml` (раннер `android`) → gitea release на теге. F-Droid — позже.
|
||||
|
||||
## Грабли: прокси и vcpkg (GUSIK-PC)
|
||||
На машине в env задан `NO_PROXY=...,192.168.5.0/24,...` (CIDR). WinHTTP-загрузчик vcpkg (и
|
||||
## Грабли: прокси и vcpkg (Windows-хосте)
|
||||
На машине в env задан `NO_PROXY=...,10.0.0.0/8,...` (CIDR). WinHTTP-загрузчик vcpkg (и
|
||||
`bootstrap.ps1`) не парсит CIDR → падает с `WinHttpSetOption/WinHttpOpen error 87/0x57` на первом же
|
||||
скачивании (nasm и т.п.). У машины есть прямой интернет (`netsh winhttp` = Direct, HEAD к nasm.us = 200),
|
||||
поэтому `build-windows.ps1` **очищает HTTP(S)_PROXY/NO_PROXY для процесса** сборки — качается напрямую.
|
||||
vcpkg.exe тоже качали вручную через IWR (bootstrap не смог) — лежит в `S:\dev\vcpkg\vcpkg.exe` (tool 2025-07-21).
|
||||
|
||||
## Тулчейн (фактические пути на GUSIK-PC)
|
||||
## Тулчейн (фактические пути на Windows-хосте)
|
||||
Flutter: `S:\dev\flutter` · vcpkg: `S:\dev\vcpkg` (VCPKG_ROOT) · **LLVM 15.0.6: `S:\dev\LLVM`**
|
||||
(VS-бандл содержит только clang-format/tidy, БЕЗ libclang.dll — ставили LLVM отдельно, LIBCLANG_PATH=`S:\dev\LLVM\bin`) ·
|
||||
Rust 1.75 (rustup override в клоне) · MSVC 14.44 из vcvars64.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Собирает преднастроенный RustDesk APK (arm64-v8a) под self-hosted сервер. Linux/VM 118.
|
||||
# Собирает преднастроенный RustDesk APK (arm64-v8a) под self-hosted сервер. Debian/Ubuntu build-машина.
|
||||
# Тулчейн — provision-android.sh (пишет ~/dev/rd-android.env). Логика зеркалит build-windows.ps1.
|
||||
#
|
||||
# Конфиг сервера: env RUSTDESK_SERVER/RUSTDESK_PUB_KEY (CI secrets) или config/server.env.
|
||||
@@ -77,7 +77,7 @@ mkdir -p "$JNI"
|
||||
cp ./target/aarch64-linux-android/release/liblibrustdesk.so "$JNI/librustdesk.so"
|
||||
cp "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so" "$JNI/"
|
||||
|
||||
# --- подпись: без key.properties (keystore Глеба) release подписываем DEBUG-ключом ---
|
||||
# --- подпись: без key.properties (своего keystore) release подписываем DEBUG-ключом ---
|
||||
# (APK ставится для теста; преднастройка от подписи не зависит — она в librustdesk.so).
|
||||
# Дашь свой keystore -> положи flutter/android/key.properties, тогда подпишется им (для раздачи/F-Droid).
|
||||
if ! grep -q 'keystorePropertiesFile.exists() ? signingConfigs.release' flutter/android/app/build.gradle; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<#
|
||||
Локальная сборка преднастроенного RustDesk-клиента под Windows (GUSIK-PC).
|
||||
Локальная сборка преднастроенного RustDesk-клиента под Windows.
|
||||
Клон rustdesk@пин -> preconfigure (вшить сервер+ключ) -> vcpkg install -> python build.py --flutter -> dist/.
|
||||
|
||||
Тулчейн (ставится один раз, см. docs/CODEMAP.md):
|
||||
@@ -53,7 +53,7 @@ $vcvars = Join-Path $vsPath 'VC\Auxiliary\Build\vcvars64.bat'
|
||||
Write-Host "Импорт VS dev-env: $vcvars" -ForegroundColor DarkCyan
|
||||
cmd /c "`"$vcvars`" >nul && set" | ForEach-Object { if ($_ -match '^([^=]+)=(.*)$') { Set-Item "Env:$($matches[1])" $matches[2] } }
|
||||
|
||||
# CIDR в NO_PROXY (напр. 192.168.5.0/24) ломает WinHTTP-загрузчик vcpkg (WinHttpSetOption 87).
|
||||
# CIDR в NO_PROXY (напр. 10.0.0.0/8) ломает WinHTTP-загрузчик vcpkg (WinHttpSetOption 87).
|
||||
# У машины есть прямой интернет -> убираем прокси-env для процесса сборки (системные настройки не трогаем).
|
||||
foreach ($p in 'HTTP_PROXY','HTTPS_PROXY','NO_PROXY','ALL_PROXY','http_proxy','https_proxy','no_proxy') { Set-Item "Env:$p" $null -EA SilentlyContinue }
|
||||
|
||||
@@ -135,7 +135,7 @@ if ($LASTEXITCODE) { Pop-Location; throw "vcpkg install упал ($LASTEXITCODE)
|
||||
Pop-Location
|
||||
|
||||
# --- сборка клиента (без портативной упаковки: её build.py делает через `python3`,
|
||||
# а на GUSIK-PC python3 = Store-заглушка -> падает; пакуем отдельно реальным python) ---
|
||||
# на этой машине python3 = Store-заглушка -> падает; пакуем отдельно реальным python) ---
|
||||
Write-Host "python build.py --flutter --skip-portable-pack..." -ForegroundColor Cyan
|
||||
Push-Location $src
|
||||
python build.py --flutter --skip-portable-pack
|
||||
|
||||
@@ -76,7 +76,7 @@ VCPKG_TRIPLET=$VCPKG_TRIPLET
|
||||
FRB_VERSION=$FRB_VERSION
|
||||
CARGO_EXPAND_VERSION=$CARGO_EXPAND_VERSION
|
||||
|
||||
# Android (VM 118)
|
||||
# Android
|
||||
ANDROID_FLUTTER_VERSION=$ANDROID_FLUTTER_VERSION
|
||||
CARGO_NDK_VERSION=$CARGO_NDK_VERSION
|
||||
NDK_VERSION=$NDK_VERSION
|
||||
|
||||
@@ -64,7 +64,14 @@ if [ "${RUSTDESK_NO_CUSTOM_CLIENT:-}" != "1" ]; then
|
||||
"$PY" - "$SRC/src/custom_client.json" "$FIRST_SRV" "$RUSTDESK_PUB_KEY" "${RUSTDESK_API_SERVER:-}" "${RUSTDESK_PRESET_PASSWORD:-}" "$LOCK_PW" <<'PYEOF'
|
||||
import sys, json, hashlib, base64, secrets
|
||||
out, server, key, api, preset_pw, lock_pw = sys.argv[1:7]
|
||||
override = {"custom-rendezvous-server": server, "relay-server": server, "key": key}
|
||||
override = {
|
||||
"custom-rendezvous-server": server,
|
||||
"relay-server": server,
|
||||
"key": key,
|
||||
"enable-check-update": "N", # выключить проверку обновлений
|
||||
}
|
||||
# Подсказка «set up your own server» гаснет сама: using_public_server()=пуст ли custom-rendezvous-server,
|
||||
# а он у нас в override -> непуст -> подсказки нет.
|
||||
if api:
|
||||
override["api-server"] = api
|
||||
cfg = {"override-settings": override}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Идемпотентно ставит Android-тулчейн под пины upstream.txt (сборка RustDesk APK).
|
||||
# Debian/Ubuntu (VM 118). Android SDK уже в /opt/android-sdk. Ставит в ~/dev.
|
||||
# Debian/Ubuntu build-машина. Ожидает Android SDK в /opt/android-sdk. Ставит в ~/dev.
|
||||
# Ставит только отсутствующее -> после bump-upstream.sh достаточно перезапустить.
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ VCPKG_TRIPLET=x64-windows-static
|
||||
FRB_VERSION=1.80.1
|
||||
CARGO_EXPAND_VERSION=1.0.95
|
||||
|
||||
# Android (VM 118)
|
||||
# Android
|
||||
ANDROID_FLUTTER_VERSION=3.24.5
|
||||
CARGO_NDK_VERSION=3.1.2
|
||||
NDK_VERSION=r28c
|
||||
|
||||
Reference in New Issue
Block a user