From 8e0d76147eb07ebcceb5064440d16ac1b64c92a1 Mon Sep 17 00:00:00 2001 From: embeddevio Date: Thu, 22 Oct 2026 00:13:02 +0300 Subject: [PATCH] =?UTF-8?q?deploy(#21):=20dev-up=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BC=D0=B0=D0=B5=D1=82=20health-=D1=81=D1=82?= =?UTF-8?q?=D0=B5=D0=BD=D0=B4=20=D0=B4=D0=BE=20#31;=20--build=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D1=84=D0=BE=D1=80=D1=81=D0=B8=D1=80=D1=83=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=B1=D0=B5=D0=B7=20deploy/Dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs #21 Refs #15 --- Makefile | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 47a94bf..d13af0e 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ NETNS_ARGS ?= VERIFY_ARGS ?= MANIFEST_ARGS ?= -.PHONY: help venv lint fmt test build dev-up dev-up-stub dev-down dev-logs dev-verify \ +.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 help: @@ -43,32 +43,57 @@ build: docker build -f deploy/Dockerfile -t $(IMAGE) . # --- dev/staging стенд (задача #21) ------------------------------------------ +# Пока FastAPI-каркас (#31) не реализован, API в образе не поднимается и AC-1 +# (`curl :8080/api/v1/health` -> 200) недостижим. Чтобы гейт #21 проверялся на +# живом стенде, `dev-up` автоматически добавляет оверрайд с health-заглушкой +# (deploy/docker-compose.stub.yml), ПОКА файла приложения нет. После мержа #31 +# оверрайд отключается сам. Явные режимы: dev-up-app / dev-up-stub. +API_APP ?= backend/awg_api/app.py +ifneq ($(wildcard $(API_APP)),) +COMPOSE_DEV_EFFECTIVE := -f $(COMPOSE_DEV) +STUB_MODE := 0 +else +COMPOSE_DEV_EFFECTIVE := -f $(COMPOSE_DEV) -f $(COMPOSE_STUB) +STUB_MODE := 1 +endif +# deploy/Dockerfile приходит с задачей #18; до этого образ собирается отдельно, +# поэтому --build не форсируем, если Dockerfile отсутствует в дереве. +DEV_UP_BUILD := $(if $(wildcard deploy/Dockerfile),--build,) +DEV_ENV := AWG_DASH_PORT=$(DASH_PORT) AWG_DASH_HOST_DIR=$(HOST_DIR) +DEV_VERIFY_ARGS := $(if $(filter 1,$(STUB_MODE)),--stub,) + dev-up: @test -f $(COMPOSE_DEV) || { echo '$(COMPOSE_DEV) ещё нет — задача #21'; exit 1; } @command -v docker >/dev/null 2>&1 || { echo 'нет docker: dev-стенд поднимается на Docker-хосте (см. deploy/dev-stand.md)'; exit 1; } - AWG_DASH_PORT=$(DASH_PORT) AWG_DASH_HOST_DIR=$(HOST_DIR) $(COMPOSE) -f $(COMPOSE_DEV) up -d --build + @[ "$(STUB_MODE)" = "0" ] || echo 'dev-up: API (#31) ещё не в дереве — поднимаю стенд с health-заглушкой (deploy/docker-compose.stub.yml)' + $(DEV_ENV) $(COMPOSE) $(COMPOSE_DEV_EFFECTIVE) up -d $(DEV_UP_BUILD) -# Health-заглушка вместо API до мержа #31 — только для проверки плумбинга стенда. +# Только реальный образ: проверка отказа API без заглушки / режим после #31. +dev-up-app: + @test -f $(COMPOSE_DEV) || { echo '$(COMPOSE_DEV) ещё нет — задача #21'; exit 1; } + $(DEV_ENV) $(COMPOSE) -f $(COMPOSE_DEV) up -d $(DEV_UP_BUILD) + +# Только health-заглушка (проверка плумбинга стенда до #31). dev-up-stub: @test -f $(COMPOSE_STUB) || { echo '$(COMPOSE_STUB) ещё нет — задача #21'; exit 1; } - AWG_DASH_PORT=$(DASH_PORT) AWG_DASH_HOST_DIR=$(HOST_DIR) $(COMPOSE) -f $(COMPOSE_DEV) -f $(COMPOSE_STUB) up -d --build + $(DEV_ENV) $(COMPOSE) -f $(COMPOSE_DEV) -f $(COMPOSE_STUB) up -d $(DEV_UP_BUILD) dev-down: - AWG_DASH_HOST_DIR=$(HOST_DIR) $(COMPOSE) -f $(COMPOSE_DEV) down + $(DEV_ENV) $(COMPOSE) $(COMPOSE_DEV_EFFECTIVE) down dev-logs: - AWG_DASH_HOST_DIR=$(HOST_DIR) $(COMPOSE) -f $(COMPOSE_DEV) logs -f --tail=100 + $(DEV_ENV) $(COMPOSE) $(COMPOSE_DEV_EFFECTIVE) logs -f --tail=100 # Проверка AC #21 на Docker-хосте: health 200 + состояние переживает restart. dev-verify: - AWG_DASH_PORT=$(DASH_PORT) AWG_DASH_HOST_DIR=$(HOST_DIR) bash $(VERIFY) $(VERIFY_ARGS) + $(DEV_ENV) bash $(VERIFY) $(DEV_VERIFY_ARGS) $(VERIFY_ARGS) dev-verify-stub: - AWG_DASH_PORT=$(DASH_PORT) AWG_DASH_HOST_DIR=$(HOST_DIR) bash $(VERIFY) --stub $(VERIFY_ARGS) + $(DEV_ENV) bash $(VERIFY) --stub $(VERIFY_ARGS) # Останавливает стенд; каталоги состояния сохраняются (удалять вручную). dev-reset: - AWG_DASH_HOST_DIR=$(HOST_DIR) $(COMPOSE) -f $(COMPOSE_DEV) down --remove-orphans + $(DEV_ENV) $(COMPOSE) $(COMPOSE_DEV_EFFECTIVE) down --remove-orphans @echo "каталоги состояния сохранены: $(HOST_DIR)/config, $(HOST_DIR)/data (удалять вручную)" # --- netns-стенд (задача #21) ------------------------------------------------