fix(rc5): harden frontend runtime and diagnostics
This commit is contained in:
@@ -771,6 +771,11 @@ hy2xs-orchestrator diagnostics collect \
|
||||
декодируется с заменой и не попадает в архив; вместо него записывается
|
||||
безопасная причина пропуска.
|
||||
|
||||
`HY2XS_FORCE_PASSWORD_CHANGE` — диагностический boolean, поэтому его значение
|
||||
`true`/`false` сохраняется. Исключение точное и не распространяется на другие
|
||||
ключи с `PASSWORD`: начальный пароль администратора, `ADMIN_CON_PASS`, пароль
|
||||
obfs и остальные секреты по-прежнему заменяются на `<redacted>`.
|
||||
|
||||
Архив создаётся в `/var/lib/hy2xs/diagnostics` с режимом `0600`. Этот каталог
|
||||
принадлежит `root:root`, имеет режим `0700` и отделён от
|
||||
`HY2XS_LOG_DIR`, которым владеет сервисный пользователь `hy2xs-admin`.
|
||||
@@ -1008,17 +1013,18 @@ export GITHUB_TOKEN=<token>
|
||||
|
||||
1. проверяет контракт `versions.env` (`verify_versions_contract`);
|
||||
2. прогоняет тесты и типы оркестратора (`bun test`, `tsc --noEmit`);
|
||||
3. прогоняет контрактные тесты панели (спрайт иконок, словари локализации, коды ошибок, атрибуция);
|
||||
3. прогоняет dependency-free контракты панели (спрайт иконок, совпадение словарей, коды ошибок, атрибуция и frontend/Go-контракты);
|
||||
4. определяет последнюю стабильную версию Hysteria, берёт ожидаемый SHA‑256 из upstream `hashes.txt` и сверяет с ним скачанный артефакт;
|
||||
5. проходит compatibility gate: реальный бинарник Hysteria должен принять канонический конфиг HY2XS для Gecko и для Salamander;
|
||||
6. собирает orchestrator, frontend и backend, проставляя версию админки из контракта;
|
||||
7. прогоняет `go vet` и `go test` для HY2XS admin;
|
||||
8. проверяет граф зависимостей на известные уязвимости (`govulncheck ./...` и `pnpm audit` по всему lock‑графу);
|
||||
9. формирует архив и прогоняет acceptance‑проверки.
|
||||
6. собирает standalone-бинарник orchestrator;
|
||||
7. устанавливает frontend lock-граф, runtime-компилирует каждое сообщение RU/EN реальным `vue-i18n`, затем проверяет типы и собирает frontend и backend, проставляя версию админки из контракта;
|
||||
8. прогоняет `go vet` и `go test` для HY2XS admin;
|
||||
9. проверяет граф зависимостей на известные уязвимости (`govulncheck ./...` и `pnpm audit` по всему lock‑графу);
|
||||
10. формирует архив и прогоняет acceptance‑проверки.
|
||||
|
||||
Любой сбой на шагах 1–8 останавливает сборку до создания пакета.
|
||||
Любой сбой на шагах 1–9 останавливает сборку до создания пакета.
|
||||
|
||||
Тесты и типы (шаги 2, 3 и 7) — такой же обязательный гейт, как проверка
|
||||
Тесты и типы (шаги 2, 3, 7 и 8) — такой же обязательный гейт, как проверка
|
||||
зависимостей: переменной, которая их отключает, не существует. Готовый пакет
|
||||
объявляет об этом полем `tests_gate=true` в `metadata/package.env`, и это
|
||||
утверждение опирается на фактический прогон, а не на намерение.
|
||||
@@ -1028,6 +1034,14 @@ export GITHUB_TOKEN=<token>
|
||||
`bun test tools/test/frontend-sprite.test.ts tools/test/frontend-contract.test.ts`
|
||||
запускаются напрямую и tarball не создают.
|
||||
|
||||
Runtime-проверка словарей требует установленного frontend lock-графа:
|
||||
|
||||
```bash
|
||||
cd apps/frontend
|
||||
pnpm install --frozen-lockfile
|
||||
bun test test/i18n-runtime.test.ts
|
||||
```
|
||||
|
||||
Переменные, управляющие выбором версии Hysteria:
|
||||
|
||||
| Переменная | По умолчанию | Назначение |
|
||||
|
||||
Reference in New Issue
Block a user