Приватность публичного репо + выкл. проверку обновлений + релиз 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,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
|
||||
$hdr = @{ Authorization = "token $env:GITEA_TOKEN" }
|
||||
$body = @{ tag_name = $tag; name = $tag; draft = $false; prerelease = $false } | ConvertTo-Json -Compress
|
||||
$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=(-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"
|
||||
|
||||
Reference in New Issue
Block a user