From e698148994e42706f988019ef1873a323effb0b0 Mon Sep 17 00:00:00 2001 From: "Alex (Yowie IT MSP)" Date: Sat, 2 May 2026 22:04:11 +1000 Subject: [PATCH] ci: Gitea Actions build pipeline for patched rustdesk.exe Self-hosted Windows runner builds the Sciter-UI rustdesk.exe with our get_cursor() patch for issue #672. Pinned to LLVM 16.0.0 + vcpkg commit 120deac3 to match upstream rustdesk CI exactly. Artifact uploaded to Gitea releases for OnRamp's Install-RustDeskClient to fetch. Triggers on push to yowie-master + workflow_dispatch. --- .gitea/workflows/build.yml | 102 +++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 .gitea/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 000000000..e2cfa9eb6 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,102 @@ +# Yowie IT — RustDesk patched-binary build pipeline +# ===================================================================== +# Source-of-truth build for the Yowie IT-patched rustdesk.exe (always- +# emit-cursor variant for #672 server endpoint headless cursor fix). +# +# Triggers: push to yowie-master, manual dispatch. +# Runs on: self-hosted Windows runner (yowie-admin-pc) registered with +# git.yowieit.com — see CHANGELOG 2026-05-02. +# +# Toolchain version pins (match rustdesk upstream CI exactly): +# - LLVM 16.0.0 (rustdesk's LLVM_VERSION) +# - vcpkg @ 120deac3062162151622ca4860575a33844ba10b +# - Rust stable +# +# Output artifact: rustdesk.exe (~50 MB) attached to a Gitea release +# tagged build-${{ github.sha }}. OnRamp's Install-RustDeskClient +# downloads from this release URL. + +name: Build patched rustdesk.exe + +on: + push: + branches: [yowie-master] + workflow_dispatch: + +env: + LLVM_VERSION: "16.0.0" + VCPKG_COMMIT_ID: "120deac3062162151622ca4860575a33844ba10b" + +jobs: + build: + name: Build Win x64 (Sciter UI) + runs-on: windows-x64 + steps: + - name: Checkout source + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Verify Rust toolchain + shell: pwsh + run: | + rustc --version + cargo --version + + - name: Setup LLVM ${{ env.LLVM_VERSION }} (pinned, matches upstream rustdesk CI) + shell: pwsh + run: | + if (-not (Test-Path 'C:\LLVM16\bin\libclang.dll')) { + $url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-$env:LLVM_VERSION/LLVM-$env:LLVM_VERSION-win64.exe" + $dst = "$env:TEMP\llvm-$env:LLVM_VERSION.exe" + Write-Output "downloading $url" + Invoke-WebRequest -Uri $url -OutFile $dst -UseBasicParsing -TimeoutSec 600 + Write-Output "installing to C:\LLVM16" + Start-Process -FilePath $dst -ArgumentList '/S','/D=C:\LLVM16' -Wait + if (-not (Test-Path 'C:\LLVM16\bin\libclang.dll')) { throw "LLVM 16 install failed" } + } + echo "LIBCLANG_PATH=C:\LLVM16\bin" >> $env:GITHUB_ENV + echo "C:\LLVM16\bin" >> $env:GITHUB_PATH + + - name: Setup vcpkg @ pinned commit ${{ env.VCPKG_COMMIT_ID }} + shell: pwsh + run: | + if (-not (Test-Path 'C:\vcpkg\vcpkg.exe')) { + git clone https://github.com/microsoft/vcpkg.git C:\vcpkg + } + Push-Location C:\vcpkg + git fetch --depth=200 origin $env:VCPKG_COMMIT_ID + git checkout $env:VCPKG_COMMIT_ID + .\bootstrap-vcpkg.bat -disableMetrics + Pop-Location + echo "VCPKG_ROOT=C:\vcpkg" >> $env:GITHUB_ENV + echo "C:\vcpkg" >> $env:GITHUB_PATH + + - name: Install vcpkg native deps (libvpx libyuv opus aom libjpeg-turbo, x64-windows-static) + shell: pwsh + run: | + C:\vcpkg\vcpkg.exe install --triplet x64-windows-static libvpx libyuv opus aom libjpeg-turbo + + - name: cargo build --release (Sciter UI, no flutter, no hwcodec) + shell: pwsh + run: | + cargo build --release --no-default-features --features inline + + - name: Verify binary + show patch line is in built source + shell: pwsh + run: | + $exe = "target\release\rustdesk.exe" + if (-not (Test-Path $exe)) { throw "rustdesk.exe not produced" } + $size = (Get-Item $exe).Length + Write-Output "rustdesk.exe size: $size bytes" + # Confirm our patch comment is in the source + if (-not (Select-String -Path "src\platform\windows.rs" -Pattern "Yowie IT MSP fork" -Quiet)) { + throw "patch marker missing from src\platform\windows.rs" + } + + - name: Upload patched rustdesk.exe artifact + uses: actions/upload-artifact@v3 + with: + name: rustdesk-yowie-windows-x64 + path: target/release/rustdesk.exe + retention-days: 30