Подготовить HY2XS к production-сборке

This commit is contained in:
2026-04-25 23:13:12 +05:00
commit 84a4e94567
277 changed files with 26513 additions and 0 deletions
@@ -0,0 +1,64 @@
HY2XS: builder layer plan
Цель builder layer
На Debian 12 amd64 build host собрать один чистый install package, который можно перенести на чистый Debian 12 без target-side build.
Технологический выбор
Baseline packaging: shell-first.
- Основной packaging pipeline: sh/bash.
- Оркестратор при этом пишется на Bun + TypeScript.
- Builder на Debian 12 amd64 собирает install-артефакт оркестратора.
- На target не должно быть обязательного JS/TS toolchain шага.
Задачи builder layer
1. Проверка структуры репозитория.
2. Проверка наличия обязательных файлов пакета.
3. Подготовка HY2XS admin fork к поставке.
4. Локальная сборка оркестратора из Bun/TypeScript.
5. Копирование UI-артефактов в package staging.
6. Копирование templates, systemd units, docs и examples.
7. Генерация metadata: version, build_id, checksums.
8. Упаковка итогового архива.
Порядок реализации builder
Этап 1.
- Создать tools/build/build.sh.
- Создать tools/build/lib/common.sh.
- Создать tools/build/lib/verify.sh.
- Создать tools/build/lib/package.sh.
- Создать tools/build/lib/deps.sh.
- Создать tools/build/README.ru.md.
Production-дополнение.
- Проверять Debian 12 amd64.
- Самостоятельно доставлять apt build-зависимости.
- Проверять и фиксировать версии Go/Bun/Node.js/pnpm.
- Использовать локальный управляемый toolchain при несовпадении версий.
Этап 2.
- Реализовать очистку package staging directory.
- Реализовать копирование package/ skeleton.
- Реализовать сборку `orchestrator/` и копирование артефакта в `package/orchestrator/`.
- Реализовать копирование ui/hy2xs-admin-fork в package/ui/hy2xs-admin.
Этап 3.
- Реализовать запись package.version и package.build_id.
- Реализовать checksums.txt.
- Реализовать создание dist/hy2xs-install-<version>.tar.gz.
Этап 4.
- Добавить builder smoke-проверку: архив собрался, в нём есть install.sh, оркестратор, UI, unit-файлы, templates.
Что builder не делает
- Не качает Hysteria2.
- Не выполняет серверные действия.
- Не меняет production state.
- Не содержит uninstall/update логики.
- Не включает access/bot backend в baseline package.
Acceptance criteria
- Одна команда локально создаёт переносимый install package.
- В package нет builder scripts.
- В package есть встроенный HY2XS admin.
- В package есть собранный Bun/TypeScript orchestrator.
- package можно передать на сервер без дополнительной сборки.