Files
AWG2_harness/tools

Build tooling

build.sh — production build gate для traffic_core.

Что делает

Скрипт:

  1. Проверяет OS и архитектуру (Debian/Ubuntu, amd64/x86_64).
  2. Проверяет наличие инструментов: cargo, rustc, gcc, pkg-config, file, ldd.
  3. Проверяет минимальную версию Rust (rustc >= 1.85.0).
  4. Запускает quality gate:
    • cargo fmt --check (если не указан --skip-fmt),
    • cargo clippy --locked --all-targets -- -D warnings,
    • cargo test --locked --release,
    • cargo build --locked --release.
  5. Проверяет собранный бинарь: file, ldd, --help, sha256sum.

Что НЕ делает

  • Не устанавливает Rust/toolchain автоматически.
  • Не устанавливает системные зависимости через apt.
  • Не создаёт production-конфиг автоматически.

Использование

Из корня репозитория:

./tools/build.sh

Опции:

  • --skip-fmt — пропустить шаг cargo fmt --check.
  • --install — после успешной сборки установить бинарь и systemd unit.

Режим --install

--install:

  1. Копирует бинарь в /usr/local/bin/awg2-harness.
  2. Проверяет, что /etc/awg2-harness/config.toml уже существует.
  3. Копирует awg2-harness.service.
  4. Выполняет systemd-analyze verify (если доступно).
  5. Выполняет systemctl daemon-reload.

Важно:

  • Если скрипт запущен от root, команды установки выполняются напрямую.
  • Если не от root — используется sudo (и проверяется его наличие).
  • Скрипт не выполняет systemctl enable --now автоматически.

Это intentional: включение сервиса и запуск остаются осознанным эксплуатационным шагом.