commit fc391963a44e4b4aa2fbb9b400641e4bf6c8d639 Author: GandC Date: Wed Sep 16 19:59:02 2026 +0300 initial diff --git a/.gitea/workflows/desktop.yml b/.gitea/workflows/desktop.yml new file mode 100644 index 0000000..441d4dd --- /dev/null +++ b/.gitea/workflows/desktop.yml @@ -0,0 +1,373 @@ +name: Build Fluxer Desktop + +on: + workflow_dispatch: + push: + branches: + - main + +env: + NODE_VERSION: "24" + PNPM_VERSION: "10.29.3" + + BUILD_CHANNEL: "stable" + NODE_ENV: "production" + FLUXER_DESKTOP_PRODUCTION: "true" + + VERSION: "1.0.${{ gitea.run_number }}" + PUBLIC_BUILD_VERSION: "1.0.${{ gitea.run_number }}" + PUBLIC_RELEASE_CHANNEL: "stable" + +jobs: + windows-x64: + name: Windows x64 + + runs-on: rustdesk-windows + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "24" + + - name: Setup pnpm + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + corepack enable + corepack prepare pnpm@10.29.3 --activate + + node --version + pnpm --version + + - name: Setup Rust + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + rustup update stable + rustup default stable + rustup target add x86_64-pc-windows-msvc + + rustc --version + cargo --version + + - name: Show build tools + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + Write-Host "Node:" + node --version + + Write-Host "pnpm:" + pnpm --version + + Write-Host "Rust:" + rustc --version + + Write-Host "Cargo:" + cargo --version + + Write-Host "CMake:" + cmake --version + + Write-Host "Ninja:" + ninja --version + + Write-Host "Clang:" + clang --version + + Write-Host "NASM:" + nasm --version + + - name: Configure self-hosted server + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + $Path = "fluxer_desktop/src/common/Constants.ts" + + $Content = Get-Content $Path -Raw + + $Content = $Content.Replace( + "export const STABLE_APP_URL = 'https://web.fluxer.app';", + "export const STABLE_APP_URL = 'https://ds.gandc.ru';" + ) + + $Content = $Content.Replace( + "export const CANARY_APP_URL = 'https://web.canary.fluxer.app';", + "export const CANARY_APP_URL = 'https://ds.gandc.ru';" + ) + + Set-Content ` + -Path $Path ` + -Value $Content ` + -NoNewline ` + -Encoding utf8 + + Get-Content $Path + + if ((Get-Content $Path -Raw) -match "web\.fluxer\.app") { + throw "STABLE_APP_URL was not replaced" + } + + if ((Get-Content $Path -Raw) -match "web\.canary\.fluxer\.app") { + throw "CANARY_APP_URL was not replaced" + } + + - name: Install dependencies + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + pnpm install --frozen-lockfile + + - name: Build Fluxer Desktop + shell: powershell + env: + ELECTRON_ARCH: x64 + run: | + $ErrorActionPreference = "Stop" + + pnpm --filter fluxer_desktop build + + - name: Package Windows portable + shell: powershell + env: + ELECTRON_ARCH: x64 + CSC_IDENTITY_AUTO_DISCOVERY: "false" + run: | + $ErrorActionPreference = "Stop" + + Set-Location fluxer_desktop + + pnpm exec electron-builder ` + --config electron-builder.config.cjs ` + --win portable ` + --x64 ` + --publish never + + - name: Show Windows artifacts + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + Get-ChildItem ` + -Path "fluxer_desktop/dist-electron" ` + -Recurse | + Select-Object FullName, Length + + - name: Upload Windows artifact + uses: actions/upload-artifact@v4.6.2 + with: + name: fluxer-windows-x64 + path: | + fluxer_desktop/dist-electron/*.exe + if-no-files-found: error + + + linux-x64: + name: Linux x64 + + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Install Linux build dependencies + shell: bash + run: | + set -euxo pipefail + + apt-get update + + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential \ + ca-certificates \ + clang \ + cmake \ + curl \ + desktop-file-utils \ + dpkg-dev \ + fakeroot \ + ffmpeg \ + git \ + libasound2 \ + libaom-dev \ + libavcodec-dev \ + libavfilter-dev \ + libavformat-dev \ + libavutil-dev \ + libdbus-1-dev \ + libdav1d-dev \ + libde265-dev \ + libfido2-dev \ + libgbm1 \ + libgtk-3-0 \ + liblcms2-dev \ + libnotify4 \ + libnss3 \ + libpipewire-0.3-dev \ + libpulse-dev \ + libsecret-1-0 \ + libssl-dev \ + libswresample-dev \ + libswscale-dev \ + libudev-dev \ + libvips-dev \ + libwayland-dev \ + libwebp-dev \ + libx11-xcb1 \ + libxcb-dri3-0 \ + libxcomposite1 \ + libxdamage1 \ + libxkbcommon-dev \ + libxkbcommon0 \ + libxrandr2 \ + libxshmfence1 \ + libxss1 \ + libxtst6 \ + llvm \ + meson \ + nasm \ + ninja-build \ + pkg-config \ + python3 \ + python3-pip \ + rpm \ + unzip \ + xdg-utils \ + xz-utils \ + yasm \ + zlib1g-dev \ + zstd + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "24" + + - name: Setup pnpm + shell: bash + run: | + set -euxo pipefail + + corepack enable + corepack prepare pnpm@10.29.3 --activate + + node --version + pnpm --version + + - name: Setup Rust + shell: bash + run: | + set -euxo pipefail + + curl \ + --proto '=https' \ + --tlsv1.2 \ + -sSf \ + https://sh.rustup.rs | + sh -s -- -y --profile minimal + + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + + "$HOME/.cargo/bin/rustup" update stable + "$HOME/.cargo/bin/rustup" default stable + + "$HOME/.cargo/bin/rustc" --version + "$HOME/.cargo/bin/cargo" --version + + - name: Configure self-hosted server + shell: bash + run: | + set -euxo pipefail + + python3 <<'PY' + from pathlib import Path + + path = Path("fluxer_desktop/src/common/Constants.ts") + data = path.read_text(encoding="utf-8") + + data = data.replace( + "export const STABLE_APP_URL = 'https://web.fluxer.app';", + "export const STABLE_APP_URL = 'https://ds.gandc.ru';", + ) + + data = data.replace( + "export const CANARY_APP_URL = 'https://web.canary.fluxer.app';", + "export const CANARY_APP_URL = 'https://ds.gandc.ru';", + ) + + path.write_text(data, encoding="utf-8") + + if "https://web.fluxer.app" in data: + raise SystemExit("STABLE_APP_URL was not replaced") + + if "https://web.canary.fluxer.app" in data: + raise SystemExit("CANARY_APP_URL was not replaced") + + print(data) + PY + + - name: Install dependencies + shell: bash + run: | + set -euxo pipefail + + pnpm install --frozen-lockfile + + - name: Build Fluxer Desktop + shell: bash + env: + ELECTRON_ARCH: x64 + run: | + set -euxo pipefail + + pnpm --filter fluxer_desktop build + + - name: Package Linux + shell: bash + env: + ELECTRON_ARCH: x64 + CSC_IDENTITY_AUTO_DISCOVERY: "false" + run: | + set -euxo pipefail + + cd fluxer_desktop + + pnpm exec electron-builder \ + --config electron-builder.config.cjs \ + --linux AppImage deb \ + --x64 \ + --publish never + + - name: Show Linux artifacts + shell: bash + run: | + set -euxo pipefail + + find fluxer_desktop/dist-electron \ + -maxdepth 2 \ + -type f \ + -printf '%p %s bytes\n' | + sort + + - name: Upload Linux artifacts + uses: actions/upload-artifact@v4.6.2 + with: + name: fluxer-linux-x64 + path: | + fluxer_desktop/dist-electron/*.AppImage + fluxer_desktop/dist-electron/*.deb + if-no-files-found: error