From 3302155ecd2aaccced811c5d57fadfa6eeb686ef Mon Sep 17 00:00:00 2001 From: Pi Agent Date: Wed, 2 Sep 2026 16:24:09 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20make=20stage=20=E2=80=94=20staging=20(a?= =?UTF-8?q?ir+vite)=20=D0=B4=D0=BB=D1=8F=20hub-stage.service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .air.toml | 3 ++- Makefile | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.air.toml b/.air.toml index a4d9655..27e206f 100644 --- a/.air.toml +++ b/.air.toml @@ -9,7 +9,8 @@ include_ext = ["go"] exclude_dir = ["web", "dist", "gen", "bin", "tmp", "proto", "docs"] # порт берётся из env PORT самим сервером: PORT=8081 air delay = 500 -stop_on_error = true +# упавший билд НЕ убивает air: стейдж продолжает отдавать последний рабочий бинарь +stop_on_error = false send_interrupt = true kill_delay = "2s" diff --git a/Makefile b/Makefile index 0330304..5eed72f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,6 @@ PORT ?= 8080 # порт бэка; в dev еще прокидывается в vite-прокси (BACKEND_PORT) +STAGE_BACKEND ?= 8081 # air-бэкенд стейджа +STAGE_VITE ?= 8584 # vite стейджа — сюда смотрит домен (Caddy → localhost:8584) .PHONY: proto web server release dev dev-srv dev-web watch test @@ -32,6 +34,13 @@ dev-web: watch: ## Hot-reload сервера (air); порт как у dev: PORT=8081 make watch PORT=$(PORT) air +stage: ## Staging: air(бэк :$(STAGE_BACKEND)) + vite(:$(STAGE_VITE)) одной командой — для hub-stage.service + PORT=$(STAGE_BACKEND) air & a=$$!; \ + cd web && BACKEND_PORT=$(STAGE_BACKEND) pnpm dev --port $(STAGE_VITE) --strictPort --host & v=$$!; \ + while kill -0 $$a 2>/dev/null && kill -0 $$v 2>/dev/null; do sleep 2; done; \ + kill $$a $$v 2>/dev/null; wait $$a $$v 2>/dev/null; \ + exit 1 # один из процессов умер — пусть systemd перезапустит сервис + test: ## Smoke-test the RPC endpoints @go build -o bin/hub-api ./server @./bin/hub-api & sleep 1; \