Полный production-рефакторинг билдера, drift-reconcile и документации по up5
This commit is contained in:
+43
-38
@@ -1,54 +1,59 @@
|
||||
# Build tooling
|
||||
# AWG2 Harness builder
|
||||
|
||||
[`build.sh`](tools/build.sh) — production build gate для [`traffic_core`](traffic_core/Cargo.toml).
|
||||
Основной скрипт: [`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
|
||||
|
||||
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-конфиг автоматически.
|
||||
|
||||
## Использование
|
||||
|
||||
Из корня репозитория:
|
||||
## Default mode
|
||||
|
||||
```bash
|
||||
./tools/build.sh
|
||||
```
|
||||
|
||||
Опции:
|
||||
Дефолтный запуск **не изменяет систему**. Он:
|
||||
|
||||
- `--skip-fmt` — пропустить шаг `cargo fmt --check`.
|
||||
- `--install` — после успешной сборки установить бинарь и systemd unit.
|
||||
- проверяет prereqs;
|
||||
- запускает `fmt/clippy/test/build` в locked-режиме;
|
||||
- печатает `file`, `ldd`, `sha256` для собранного бинаря.
|
||||
|
||||
## Режим `--install`
|
||||
## Flags
|
||||
|
||||
`--install`:
|
||||
- `--prepare-build-env` — установить недостающие build-пакеты;
|
||||
- `--prepare-runtime-env` — установить недостающие runtime-пакеты;
|
||||
- `--bootstrap-rust` — установить rustup и pinned toolchain;
|
||||
- `--install` — установить бинарь + systemd unit (без enable/start);
|
||||
- `--enable` — `systemctl enable --now awg2-harness.service`;
|
||||
- `--yes` — подтверждение системных изменений (apt/rustup);
|
||||
- `--skip-fmt` — пропустить `cargo fmt --check`;
|
||||
- `--help` — справка.
|
||||
|
||||
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`.
|
||||
## Typical build machine flow
|
||||
|
||||
Важно:
|
||||
```bash
|
||||
./tools/build.sh --prepare-build-env --bootstrap-rust --yes
|
||||
./tools/build.sh
|
||||
```
|
||||
|
||||
- Если скрипт запущен от root, команды установки выполняются напрямую.
|
||||
- Если не от root — используется `sudo` (и проверяется его наличие).
|
||||
- Скрипт **не** выполняет `systemctl enable --now` автоматически.
|
||||
## Typical production host flow
|
||||
|
||||
Это intentional: включение сервиса и запуск остаются осознанным эксплуатационным шагом.
|
||||
```bash
|
||||
./tools/build.sh --prepare-runtime-env --yes
|
||||
install -d -m 0755 /etc/awg2-harness
|
||||
install -m 0644 config.toml /etc/awg2-harness/config.toml
|
||||
./tools/build.sh
|
||||
./tools/build.sh --install
|
||||
./tools/build.sh --enable
|
||||
```
|
||||
|
||||
## What the script intentionally does not do
|
||||
|
||||
- не устанавливает Docker автоматически;
|
||||
- не генерирует production config из example;
|
||||
- не включает сервис без явного `--enable`;
|
||||
- не управляет установкой AmneziaWG.
|
||||
|
||||
Reference in New Issue
Block a user