Files

6.3 KiB
Raw Permalink Blame History

GSCORD Desktop CI

Workflow собирает Fluxer Desktop для Windows x64 (portable EXE) и Linux x64 (AppImage, DEB). Патчи находятся в patches/, порядок — в patches/series. node scripts/apply-patches.mjs fluxer-src сначала проверяет всю серию через git apply --check, затем применяет её через git apply.

Изменения

  • 0001-self-hosted-instance.patch: STABLE_APP_URL, CANARY_APP_URL, desktop homepage и адреса миграции — https://ds.gandc.ru. Новый встроенный renderer начинает discovery с этого сервера; явный launch override сохраняет приоритет.
  • 0002-sso-navigation.patch: точный origin https://sso.gandc.ru и возврат на https://ds.gandc.ru разрешены для navigation/redirect. Проверка доверия к IPC и разрешениям остаётся upstream: внешняя SSO-страница не становится локальным доверенным renderer.
  • 0003-webrtc-livekit.patch: relay → all в main world для конструктора RTCPeerConnection и setConfiguration(). Сохранён существовавший workaround LiveKit offer-with-join через CompressionStream/WebSocket.
  • 0004-gitea-updates.patch: проверка последнего релиза через Gitea API, ссылки на реальные assets с учётом платформы и архитектуры. Windows и Linux, включая AppImage, используют ручное скачивание обновления. Для DEB не предлагаются отсутствующие RPM/tar.gz assets. Пустой список ведёт на releases.

Проверок, валящих сборку при новых дефолтных Fluxer hostnames, нет. Неизменённые upstream-адреса могут оставаться в исходниках. Если upstream изменит строки, затрагиваемые патчами, обычный конфликт git apply остановит сборку.

Workflow

  1. shared-renderer получает текущий upstream main, выдаёт его SHA для обоих платформенных заданий, применяет патчи и собирает общий renderer на Linux.
  2. Windows и Linux скачивают тот же SHA, применяют ту же серию и собирают native modules + Electron с --use-shared-renderer.
  3. Сохраняются существующие runner labels и Linux Nexus/RAM-настройки.

Node.js — 26, как в текущем upstream build workflow. Версия pnpm читается из upstream package.json (11.27.0 на проверенном commit), а зависимости ставятся с --frozen-lockfile --prod=false, чтобы NODE_ENV=production не исключал инструменты сборки. Rust stable обновляется перед сборкой; для renderer нужен wasm32-unknown-unknown, clang с WASM backend и llvm-ar. Путь $CARGO_HOME/bin добавлен в RAM action, поскольку upstream устанавливает туда wasm-bindgen.

FLUXER_MODULES=0 сохраняет полный локальный renderer: Gitea releases не являются сервером Fluxer module manifests. FLUXER_OFFLINE=0 сохраняет обычный сетевой клиент. Теперь web-renderer обновляется вместе с desktop-сборкой, а не просто подгружается как страница сервера. Совместимость renderer с API вашего сервера нужно проверить запуском готового клиента.

В Windows добавлен checkout CI-репозитория и явные проверки exit code внешних команд. .gitattributes сохраняет LF в патчах на Windows.

Локальная проверка

Из корня этого репозитория с Node.js 24+ и Git:

node scripts/prepare-upstream.mjs
node scripts/apply-patches.mjs fluxer-src --check
node scripts/apply-patches.mjs fluxer-src
node --test scripts/customizations.test.mjs

prepare-upstream.mjs требует отсутствия fluxer-src, чтобы не затереть чужие изменения. Для проверки конкретной версии передайте UPSTREAM_SHA с полным SHA. Для тестов против другой директории можно задать FLUXER_SOURCE.

Проверено 11 октября 2026

  • Исходный GSCORD commit: 703bf076e2fe3a253cb6cf6591d64f6ddad54343.
  • Upstream main: 575a5adbeff0b46390fb08901c7166649255204c.
  • Все четыре патча прошли git apply --check --whitespace=error-all и реальное применение на чистом checkout этого upstream commit.
  • 12 проверок: адреса/начальный сервер, SSO allowlist, ICE constructor и setConfiguration, subclass/default behavior, LiveKit, Gitea assets/архитектуры, download links и выбор manual updater.
  • YAML workflow и composite action разобраны; Bash-блоки прошли bash -n.
  • Workflow прошёл actionlint 1.7.12. Для этого GitHub-ориентированного валидатора только в временной копии заменён gitea.run_number на github.run_number и указаны два пользовательских runner label; shellcheck/pyflakes отключены.
  • JavaScript helper scripts и изменённый TypeScript проверены на синтаксис.

Полная установка зависимостей, TypeScript typecheck, native-сборка, упаковка и живые проверки SSO/звонков здесь не запускались. Их нужно выполнить на ваших CI runner; успешное применение патчей не подтверждает совместимость серверного API или наличие всех системных библиотек в builder image.