65 lines
3.2 KiB
Plaintext
65 lines
3.2 KiB
Plaintext
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.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 можно передать на сервер без дополнительной сборки.
|