# AWG2 Harness builder Основной скрипт: [`build.sh`](build.sh). Целевой crate: [`traffic_core`](../traffic_core/Cargo.toml). Unit: [`awg2-harness.service`](../awg2-harness.service). Пример конфига: [`config.example.toml`](../config.example.toml). ## Supported host - Debian/Ubuntu (apt-based) - amd64/x86_64 ## Purpose Скрипт используется на build-machine для проверки, сборки и упаковки AWG2 Harness. ## Default mode ```bash ./tools/build.sh ``` Дефолтный запуск **не изменяет систему**. Он: - проверяет prereqs; - запускает `fmt/clippy/test/build` в locked-режиме; - печатает `file`, `ldd`, `sha256` для собранного бинаря. ## Flags - `--prepare-build-env` — установить недостающие build-пакеты; - `--prepare-runtime-env` — установить недостающие runtime-пакеты; - `--bootstrap-rust` — установить rustup и pinned toolchain; - `--build` — запустить build gate явно; - `--package` — собрать Debian-пакет в `dist/`; - `--dist-dir ` — директория для release artifacts; - `--version ` — переопределить версию пакета; - `--install` — установить бинарь + systemd unit (без enable/start); - `--enable` — `systemctl enable --now awg2-harness.service`; - `--yes` — подтверждение системных изменений (apt/rustup); - `--skip-fmt` — пропустить `cargo fmt --check`; - `--help` — справка. ## Build machine flow ```bash ./tools/build.sh --prepare-build-env --bootstrap-rust --yes ./tools/build.sh --build ./tools/build.sh --package ``` ## Production host flow В нормальном production deployment **не нужно** клонировать репозиторий на целевой хост. Ставится сгенерированный пакет: ```bash apt install ./awg2-harness_*_amd64.deb ``` ## Manual source-tree install `--install` и `--enable` оставлены для staging/debug из checked-out source tree. Это **не рекомендуемый** production path. ## What the script intentionally does not do - не устанавливает Docker автоматически; - не генерирует production config из example; - не включает сервис без явного `--enable`; - не управляет установкой AmneziaWG.