#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" BUILD_DIR="$ROOT_DIR/tools/build" # shellcheck source=tools/build/lib/common.sh . "$BUILD_DIR/lib/common.sh" # versions.sh подключается до deps.sh: deps.sh больше не носит собственных # значений по умолчанию и берёт весь toolchain-контракт отсюда. # shellcheck source=tools/build/lib/versions.sh . "$BUILD_DIR/lib/versions.sh" load_versions_contract # shellcheck source=tools/build/lib/deps.sh . "$BUILD_DIR/lib/deps.sh" # shellcheck source=tools/build/lib/verify.sh . "$BUILD_DIR/lib/verify.sh" # shellcheck source=tools/build/lib/hysteria.sh . "$BUILD_DIR/lib/hysteria.sh" # shellcheck source=tools/build/lib/acceptance.sh . "$BUILD_DIR/lib/acceptance.sh" # shellcheck source=tools/build/lib/package.sh . "$BUILD_DIR/lib/package.sh" main() { cd "$ROOT_DIR" require_build_host_platform require_repo_layout verify_source_tree_policy ensure_build_dependencies ensure_toolchain # Версия пакета приходит из versions.env: собственного значения по # умолчанию у сборки больше нет. PACKAGE_VERSION="${PACKAGE_VERSION:-$HY2XS_VERSION}" BUILD_ID="${BUILD_ID:-$(date -u +%Y%m%dT%H%M%SZ)}" verify_versions_contract log_step "Checking orchestrator contracts" run_orchestrator_tests log_step "Resolving upstream Hysteria and running compatibility gate" resolve_and_verify_hysteria log_step "Preparing package stage" prepare_stage "$PACKAGE_VERSION" "$BUILD_ID" log_step "Building install-only orchestrator" build_orchestrator log_step "Bundling HY2XS admin" bundle_ui # Тесты админки идут после bundle_ui: `go:embed all:dist` требует уже # собранных frontend-ассетов, которых нет в git. log_step "Checking HY2XS admin contracts" run_admin_tests log_step "Writing metadata" write_metadata "$PACKAGE_VERSION" "$BUILD_ID" log_step "Creating final archive" create_archive "$PACKAGE_VERSION" log_step "Verifying final archive" verify_archive "$PACKAGE_VERSION" log_info "Built dist/hy2xs-install-${PACKAGE_VERSION}.tar.gz" } main "$@"