From e67290174114a917b6fc0170fe6afff38e3b0c80 Mon Sep 17 00:00:00 2001 From: embeddevio Date: Wed, 28 Oct 2026 21:57:44 +0300 Subject: [PATCH] =?UTF-8?q?deploy(#21):=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=20=D0=BA=D0=BE=D0=B4=D0=BE=D0=B2=20netns=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20make,=20AWG=5FNS=5FEXEC=5FMODE=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82=D0=B5=D1=82=D0=B5,?= =?UTF-8?q?=20DEV=5FSKIP=5FBUILD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Реализация замечаний ревью PR #53 (issuecomment-664): 1. tests/netns/ci.sh — точка входа для CI #17 без make: docker compose run --rm -T netns, код контейнера возвращается как есть (0/1/3/4; 2 — сломан вызов/нет docker/образа). make test-netns-ci делегирует в неё, в комментарии таргета зафиксировано «make → 2». 2. NETNS_EXEC_MODE ?= $(if $(AWG_NS_EXEC_MODE),$(AWG_NS_EXEC_MODE),auto) — документированный AWG_NS_EXEC_MODE больше не перекрывается make-алиасом. 3. DEV_SKIP_BUILD=1 → up -d --no-build; DEV_UP_BUILD переопределяем (?) — dev-up работает на хосте без DNS/сети для сборки. Refs #21 Refs #56 --- Makefile | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 638ec38..55c3ea5 100644 --- a/Makefile +++ b/Makefile @@ -15,8 +15,11 @@ DASH_PORT ?= 8180 NETNS_ARGS ?= VERIFY_ARGS ?= MANIFEST_ARGS ?= -# Режим входа в netns внутри тестового контейнера: auto|ip|nsenter (issue #56). -NETNS_EXEC_MODE ?= auto +# Режим входа в netns: auto|ip|nsenter (issue #56). Документированное имя — +# AWG_NS_EXEC_MODE (его читают lib.sh/run.sh и tests/netns/ci.sh); NETNS_EXEC_MODE — +# make-алиас. Раньше здесь стояло `?= auto`, из-за чего AWG_NS_EXEC_MODE=ip на +# `make test-netns-ci` молча игнорировался (замечание ревью #56). +NETNS_EXEC_MODE ?= $(if $(AWG_NS_EXEC_MODE),$(AWG_NS_EXEC_MODE),auto) .PHONY: help venv lint fmt test build dev-up dev-up-app dev-up-stub dev-down dev-logs dev-verify \ dev-verify-stub dev-reset test-netns test-netns-keep test-netns-ci test-manifests lint-shell \ @@ -61,7 +64,14 @@ STUB_MODE := 1 endif # deploy/Dockerfile приходит с задачей #18; до этого образ собирается отдельно, # поэтому --build не форсируем, если Dockerfile отсутствует в дереве. -DEV_UP_BUILD := $(if $(wildcard deploy/Dockerfile),--build,) +# После мержа #18 файл есть → --build обязателен, но не всегда возможен: на +# стенд-хосте нет DNS/сети для pull базового образа. Явные кнобы: +# make dev-up DEV_SKIP_BUILD=1 → up -d --no-build (использовать готовый образ) +# make dev-up DEV_UP_BUILD= → вообще не передавать флаги сборки +DEV_UP_BUILD ?= $(if $(wildcard deploy/Dockerfile),--build,) +ifeq ($(DEV_SKIP_BUILD),1) +DEV_UP_BUILD := --no-build +endif DEV_ENV := AWG_DASH_PORT=$(DASH_PORT) AWG_DASH_HOST_DIR=$(HOST_DIR) DEV_VERIFY_ARGS := $(if $(filter 1,$(STUB_MODE)),--stub,) @@ -111,10 +121,16 @@ test-netns-keep: # Тот же стенд в привилегированном контейнере — путь для CI (#17). # Внутри контейнера `ip netns exec` падает с "mount of /sys failed: Operation # not permitted" (iproute2 6.x), поэтому харнесс сам переключается на -# `nsenter --net=/var/run/netns/` (issue #56). AWG_NS_EXEC_MODE форсирует -# режим: ip|nsenter|auto. +# `nsenter --net=/var/run/netns/` (issue #56). Режим задаётся +# AWG_NS_EXEC_MODE=ip|nsenter|auto (make-алиас — NETNS_EXEC_MODE). +# +# ВАЖНО: make возвращает 2 на любой упавший рецепт, поэтому контракт кодов +# 0/1/3/4 через этот таргет НЕ виден (см. deploy/VERIFICATION-21.md §6.1). +# В пайплайне #17 используйте точку входа без make: +# bash tests/netns/ci.sh # те же 0/1/3/4, что отдаёт контейнер test-netns-ci: - AWG_DASH_IMAGE=$(IMAGE) AWG_NS_EXEC_MODE=$(NETNS_EXEC_MODE) $(COMPOSE) -f $(COMPOSE_TEST) run --rm netns + @test -d tests/netns || { echo 'tests/netns ещё нет — задача #21'; exit 1; } + AWG_DASH_IMAGE=$(IMAGE) AWG_NS_EXEC_MODE=$(NETNS_EXEC_MODE) bash tests/netns/ci.sh $(NETNS_ARGS) # --- статические проверки манифестов и скриптов ------------------------------ test-manifests: