55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
# Build tooling
|
|
|
|
[`build.sh`](tools/build.sh) — production build gate для [`traffic_core`](traffic_core/Cargo.toml).
|
|
|
|
## Что делает
|
|
|
|
Скрипт:
|
|
|
|
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-конфиг автоматически.
|
|
|
|
## Использование
|
|
|
|
Из корня репозитория:
|
|
|
|
```bash
|
|
./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`](awg2-harness.service).
|
|
4. Выполняет `systemd-analyze verify` (если доступно).
|
|
5. Выполняет `systemctl daemon-reload`.
|
|
|
|
Важно:
|
|
|
|
- Если скрипт запущен от root, команды установки выполняются напрямую.
|
|
- Если не от root — используется `sudo` (и проверяется его наличие).
|
|
- Скрипт **не** выполняет `systemctl enable --now` автоматически.
|
|
|
|
Это intentional: включение сервиса и запуск остаются осознанным эксплуатационным шагом.
|