Files
rustdesk-custom/.gitea/workflows/build-windows.yaml
T
gusadmin e06e1cadad CI: build-windows.yaml (раннер windows) + build-windows.ps1 CI-ready
Конфиг сервера из env-secrets (не только из файла), клон rustdesk
переопределяем через RUSTDESK_SRC_DIR (на S:, C: раннера тесный).
Workflow: сборка на GUSIK-PC + attach установщика к Gitea Release на v*.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 17:19:21 +03:00

78 lines
3.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: build-windows
# Собирает преднастроенный RustDesk-клиент под Windows на раннере `windows` (= GUSIK-PC,
# где тулчейн уже поднят: Rust 1.75, Flutter 3.24.5, vcpkg@пин, LLVM 15, rustfmt).
# Всю логику несёт scripts/build-windows.ps1 — тот же путь, что и локально.
#
# Секреты репозитория (Settings -> Actions -> Secrets):
# RUSTDESK_SERVER — хост hbbs (напр. rd.enersbyt.ru)
# RUSTDESK_PUB_KEY — публичный ключ сервера (base64)
# Публикация: на теге v* установщик прикрепляется к Gitea Release; иначе кладётся в S:\rd-ci\out.
on:
workflow_dispatch:
push:
tags: ['v*']
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
steps:
- 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"
- name: Build preconfigured client
shell: pwsh
env:
RUSTDESK_SERVER: ${{ secrets.RUSTDESK_SERVER }}
RUSTDESK_PUB_KEY: ${{ secrets.RUSTDESK_PUB_KEY }}
run: pwsh -NoProfile -File scripts/build-windows.ps1
- name: Attach installer to Gitea Release
if: startsWith(github.ref, 'refs/tags/v')
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
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) {
Write-Host "Uploading $($f.Name)..."
& 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)" }