Files

87 lines
6.3 KiB
Markdown
Raw Permalink 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.
# 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:
```sh
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.