3.6 KiB
HY2XS production builder
Назначение
tools/build/build.sh собирает один переносимый install package HY2XS для production-развёртывания.
Итоговый артефакт создаётся в dist/hy2xs-install-<version>.tar.gz и предназначен для установки на чистый Debian 12 amd64 без target-side сборки.
Поддерживаемая среда сборки
Builder поддерживает только:
- Debian 12;
- amd64 / x86_64;
- bash;
- доступ к интернету для установки build-зависимостей и toolchain.
Windows/macOS не являются production build host. На Windows можно править исходники, но финальную сборку нужно выполнять на Debian 12 amd64.
Что builder делает сам
При запуске builder:
- Проверяет ОС и архитектуру build host.
- Проверяет структуру репозитория.
- Доставляет отсутствующие системные build-зависимости через
apt-get. - Проверяет и при необходимости скачивает локальный toolchain:
- Go
1.21.13; - Bun
1.1.45; - Node.js
20.19.0; - pnpm
9.15.9.
- Go
- Собирает install-only orchestrator под Linux amd64.
- Собирает bundled HY2XS admin под Linux amd64.
- Формирует metadata и checksums.
- Создаёт архив install package.
- Проверяет состав итогового архива.
Запуск
Из корня репозитория:
./tools/build/build.sh
С явной версией пакета:
PACKAGE_VERSION=0.1.0 ./tools/build/build.sh
С явным build id:
PACKAGE_VERSION=0.1.0 BUILD_ID=prod-20260425-001 ./tools/build/build.sh
Локальный toolchain
Builder ставит управляемый toolchain в .toolchain/ и не требует ручной установки Go/Bun/Node/pnpm в систему.
Если нужная версия уже установлена глобально, builder может использовать её. Если версия не совпадает, будет скачана локальная версия.
Важные ограничения
- Builder не ставит HY2XS на сервер.
- Builder не выполняет target install.
- Builder не собирает ничего на target machine.
- Builder не вендорит Hysteria2 binary в пакет: Hysteria2 скачивается install layer'ом с official upstream.
- Итоговый package не должен содержать build scripts,
.toolchainили временные каталоги.
Результат
После успешной сборки появится архив:
dist/hy2xs-install-<version>.tar.gz
Его нужно перенести на target Debian 12 amd64, распаковать и запустить install.sh от root.
Диагностика
Если сборка падает:
- Проверьте, что host — Debian 12 amd64.
- Проверьте доступ к
go.dev,github.com,nodejs.org, npm registry и apt repositories. - Удалите
.toolchain/и повторите запуск, если toolchain скачался повреждённым. - Проверьте lock-файлы
orchestrator/bun.lock,apps/frontend/pnpm-lock.yaml,apps/go.sum.