Files
rustdesk-custom/.gitea/workflows/build-windows.yaml
T
gusadmin 1b3c3496c5 Приватность публичного репо + выкл. проверку обновлений + релиз 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>
2026-07-14 19:13:54 +03:00

62 lines
3.0 KiB
YAML

name: build-windows
# Собирает преднастроенный RustDesk-клиент под Windows на раннере `windows` (тулчейн уже поднят —
# см. scripts/provision-windows.ps1). Всю логику несёт scripts/build-windows.ps1.
#
# Секреты репозитория (Settings -> Actions -> Secrets):
# RUSTDESK_SERVER, RUSTDESK_PUB_KEY, (опц.) RUSTDESK_PRESET_PASSWORD
# Публикация: установщик кладётся в Gitea Release `latest` (обновляется каждый прогон — стабильная
# ссылка на актуальный билд), а на теге v* — ещё и в версионный релиз.
on:
workflow_dispatch:
push:
tags: ['v*']
permissions:
contents: write
jobs:
windows:
runs-on: windows
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Add cargo to PATH
shell: pwsh
run: Add-Content -Path $env:GITHUB_PATH -Value "$env:USERPROFILE\.cargo\bin"
- name: Build preconfigured client
shell: pwsh
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: Publish installer to Gitea Release
shell: pwsh
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: |
$ErrorActionPreference = 'Stop'
$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" }
$files = Get-ChildItem -Path dist -Filter 'rustdesk-*-install.exe' -File
if (-not $files) { throw "нет установщика в dist/" }
foreach ($f in $files) {
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"