Files
HY2XS_flamy/versions.env
T
founder 9da61c9482 build: versions.env как единый контракт продукта, платформы и toolchain
Версии были размазаны: PACKAGE_VERSION в build.sh, схема конфигурации в
profile.ts и в hy2xs.env, версии toolchain в deps.sh, Debian 13 в
нескольких местах. Расхождение уже перестало быть теоретическим - пакет
1.0.0 сообщал "HY2XS admin version v0.0.22".

Введён корневой versions.env: версия продукта, линия релиза, схема
конфигурации, целевая платформа, версии и контрольные суммы
Go/Bun/Node/pnpm, политика выбора Hysteria.

Чего в нём нет намеренно:

1. Прикладных зависимостей - у них есть pnpm-lock.yaml, bun.lock,
   go.sum. Второй слой неизбежно разъедется с настоящим графом.
2. Конкретной версии Hysteria - здесь только политика
   HYSTERIA_CHANNEL, результат резолва живёт в hysteria-lock.env.
   Пин версии здесь вернул бы ручное обновление.

Подход - проверка, а не генерация. profile.ts, hy2xs.env и
packageManager в двух package.json остаются обычными файлами, чтобы
bun test, tsc и go test работали из чистого чекаута до сборки. Новый
шаг verify_versions_contract роняет сборку до создания tarball при
расхождении. Контракт оркестратора сверяется не grep'ом по исходникам,
а выводом print-contract.ts: это доказывает, что в бинарь попало то же
значение.

Версия админки перестала быть константой и приезжает через ldflags;
собранный бинарь проверяется запуском hy2xs-admin version.

Контрольные суммы toolchain больше не передаются через окружение. Для
Bun зафиксированы обе суммы: артефакт выбирается по наличию AVX2,
поэтому одной архитектурно недостаточно. Production-сборка снова
запускается одной командой.
2026-08-27 12:15:24 +05:00

63 lines
3.2 KiB
Bash
Raw 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.
# HY2XS: единственный источник истины для контракта
# «продукт / платформа / toolchain».
#
# Что здесь ЕСТЬ:
# версия продукта, линия релиза, схема конфигурации, целевая платформа,
# версии и контрольные суммы build-toolchain, политика выбора Hysteria.
#
# Чего здесь НЕТ и быть не должно:
# 1. Прикладные зависимости (Vue, Gin, GORM, npm/Go модули). У них уже есть
# канонические lock-механизмы: apps/frontend/pnpm-lock.yaml,
# orchestrator/bun.lock, apps/go.sum. Второй слой неизбежно разъедется
# с настоящим графом зависимостей.
# 2. Конкретная версия Hysteria. Здесь живёт только ПОЛИТИКА выбора
# (HYSTERIA_CHANNEL). Результат резолва конкретной сборки замораживается
# в tools/build/hysteria-lock.env. Пин версии здесь вернул бы ручное
# обновление, от которого мы ушли.
#
# Файл читается сборкой (tools/build/lib/versions.sh) и проверяется шагом
# verify_versions_contract: рассинхрон с package.json / profile.ts /
# hy2xs.env / go.mod роняет сборку до создания tarball.
#
# Синтаксис — POSIX shell: файл должен безопасно подключаться через `.`
# без jq, Node и Python.
# ------------------------------------------------------------- продукт ---
HY2XS_VERSION=1.0.0
HY2XS_RELEASE_LINE=1
HY2XS_CONFIG_SCHEMA_VERSION=2
# ------------------------------------------------------------ платформа ---
HY2XS_BUILD_OS=debian
HY2XS_BUILD_OS_VERSION=13
HY2XS_BUILD_ARCH=amd64
HY2XS_TARGET_OS=debian
HY2XS_TARGET_OS_VERSION=13
HY2XS_TARGET_ARCH=amd64
# ------------------------------------------------------------ toolchain ---
GO_VERSION=1.21.13
GO_LINUX_AMD64_SHA256=502fc16d5910562461e6a6631fb6377de2322aad7304bf2bcd23500ba9dab4a7
# Bun выбирает артефакт по наличию AVX2, поэтому одной контрольной суммы
# архитектурно недостаточно: обе должны быть зафиксированы заранее.
BUN_VERSION=1.3.13
BUN_LINUX_X64_SHA256=79c0771fa8b92c33aae41e15a0e0d307ea99d0e2f00317c71c6c53237a78e25a
BUN_LINUX_X64_BASELINE_SHA256=9d8a24292a7068090205daac0a5a223f5f69736f5287e37bf88d3b4031edc750
NODE_VERSION=20.19.0
NODE_LINUX_X64_SHA256=b4e336584d62abefad31baecff7af167268be9bb7dd11f1297112e6eed3ca0d5
# pnpm ставится через corepack, отдельного архива с контрольной суммой нет.
PNPM_VERSION=9.15.9
# ------------------------------------------------ политика выбора Hysteria ---
# stable — резолвить последний стабильный upstream-релиз на build-машине;
# pinned — использовать закоммиченный tools/build/hysteria-lock.env офлайн.
HYSTERIA_CHANNEL=stable