@@ -16,7 +16,7 @@ NETNS_ARGS ?=
|
|||||||
VERIFY_ARGS ?=
|
VERIFY_ARGS ?=
|
||||||
MANIFEST_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
|
dev-verify-stub dev-reset test-netns test-netns-keep test-netns-ci test-manifests lint-shell
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@@ -43,32 +43,57 @@ build:
|
|||||||
docker build -f deploy/Dockerfile -t $(IMAGE) .
|
docker build -f deploy/Dockerfile -t $(IMAGE) .
|
||||||
|
|
||||||
# --- dev/staging стенд (задача #21) ------------------------------------------
|
# --- 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:
|
dev-up:
|
||||||
@test -f $(COMPOSE_DEV) || { echo '$(COMPOSE_DEV) ещё нет — задача #21'; exit 1; }
|
@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; }
|
@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:
|
dev-up-stub:
|
||||||
@test -f $(COMPOSE_STUB) || { echo '$(COMPOSE_STUB) ещё нет — задача #21'; exit 1; }
|
@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:
|
dev-down:
|
||||||
AWG_DASH_HOST_DIR=$(HOST_DIR) $(COMPOSE) -f $(COMPOSE_DEV) down
|
$(DEV_ENV) $(COMPOSE) $(COMPOSE_DEV_EFFECTIVE) down
|
||||||
|
|
||||||
dev-logs:
|
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.
|
# Проверка AC #21 на Docker-хосте: health 200 + состояние переживает restart.
|
||||||
dev-verify:
|
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:
|
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:
|
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 (удалять вручную)"
|
@echo "каталоги состояния сохранены: $(HOST_DIR)/config, $(HOST_DIR)/data (удалять вручную)"
|
||||||
|
|
||||||
# --- netns-стенд (задача #21) ------------------------------------------------
|
# --- netns-стенд (задача #21) ------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user