docs(#21): README netns и runbook dev-stand — ci.sh, приоритет AWG_NS_EXEC_MODE, DEV_SKIP_BUILD
Приведение документации к фактическому поведению после ревью PR #53 (раунд 2): точка входа для CI без make (контракт 0/1/3/4), приоритет AWG_NS_EXEC_MODE над make-алиасом, сборка без сети (DEV_SKIP_BUILD=1). Refs #21 Refs #56
This commit is contained in:
+20
-1
@@ -21,6 +21,15 @@ make dev-logs # логи контейнера
|
||||
make dev-down # остановить (каталоги состояния сохраняются)
|
||||
```
|
||||
|
||||
`dev-up` добавляет `--build`, когда в дереве есть `deploy/Dockerfile` (после мержа #18).
|
||||
Если у хоста нет сети/DNS для `docker build` (офлайн-стенд, CI без прокси), сборку
|
||||
нужно пропустить — образ `awg-dash:dev` уже должен существовать:
|
||||
|
||||
```bash
|
||||
make dev-up DEV_SKIP_BUILD=1 # up -d --no-build — использовать готовый образ
|
||||
make dev-up DEV_UP_BUILD= # вообще не передавать флаги сборки
|
||||
```
|
||||
|
||||
До реализации FastAPI-каркаса (**#31**) `/api/v1/health` не отвечает — контейнер
|
||||
работает как агент и помечается `unhealthy`. Чтобы проверить плумбинг стенда
|
||||
(порт, healthcheck, тома, restart) **до** #31, используйте health-заглушку:
|
||||
@@ -71,6 +80,10 @@ make dev-verify-stub # AC-1 проходит на заглушке, в отч
|
||||
| `AWG_DASH_DOCKERFILE` | `deploy/Dockerfile` | путь к Dockerfile для build |
|
||||
| `COMPOSE_PROJECT_NAME` | `awg-dash-dev` | изоляция от других стендов |
|
||||
| `AWG_LOG_LEVEL` | `info` | уровень логирования приложения |
|
||||
| `DEV_SKIP_BUILD` | — | `1` → `make dev-up` выполняет `up -d --no-build` (образ уже собран) |
|
||||
| `DEV_UP_BUILD` | авто | переопределение флагов сборки (`--build`, пусто, `--no-build`) |
|
||||
| `AWG_NS_EXEC_MODE` | `auto` | режим входа в netns: `auto|ip|nsenter` (issue #56) |
|
||||
| `NETNS_EXEC_MODE` | `auto` | make-алиас `AWG_NS_EXEC_MODE` (приоритет у `AWG_NS_EXEC_MODE`) |
|
||||
|
||||
## Зависимости
|
||||
|
||||
@@ -79,7 +92,7 @@ make dev-verify-stub # AC-1 проходит на заглушке, в отч
|
||||
| #16 (каркас репо, Makefile) | PR #47 | нужен `Makefile`, `requirements.txt`, `deploy/` |
|
||||
| #18 (образ, entrypoint) | PR #49 | нужен `deploy/Dockerfile` для `--build` |
|
||||
| #31 (каркас FastAPI, `/api/v1/health`) | Sprint 2 | без него AC-1 выполняется только с заглушкой |
|
||||
| #17 (CI-пайплайн) | Sprint 0 | `make test-netns-ci`, `make test-manifests` — готовые гейты для пайплайна |
|
||||
| #17 (CI-пайплайн) | Sprint 0 | гейты для пайплайна: `bash tests/netns/ci.sh` (коды 0/1/3/4), `make test-manifests`, `make test-deploy`, `make lint-shell` |
|
||||
|
||||
## Откат и уборка
|
||||
|
||||
@@ -106,3 +119,9 @@ du -sh /opt/awg-dash-dev # состояние стенда
|
||||
маскирует отсутствие API. Не включайте `docker-compose.stub.yml` в staging.
|
||||
* **netns-стенд вне Docker** требует root: `make test-netns` вернёт код 3, если нет
|
||||
CAP_NET_ADMIN/CAP_SYS_ADMIN (например, в непривилегированном CI-раннере).
|
||||
* **netns в контейнере (`make test-netns-ci`, `bash tests/netns/ci.sh`)**: `ip netns exec`
|
||||
падает (`mount of /sys failed`), харнесс сам переходит на `nsenter`; контракт кодов
|
||||
`0/1/3/4` действует на уровне контейнера. **make возвращает 2 на любом провале** —
|
||||
в CI вызывайте `bash tests/netns/ci.sh`, иначе ветки 3 и 4 неразличимы (#56).
|
||||
* **`--build` без сети**: после мержа #18 `dev-up` собирает образ; если на хосте нет
|
||||
DNS/доступа к registry, используйте `DEV_SKIP_BUILD=1` (готовый `awg-dash:dev`).
|
||||
|
||||
Reference in New Issue
Block a user