fix(deploy): надёжный рендер шаблонов и устойчивый цикл подстановки
- render_template: значения передаются через окружение (envsubst), а не
подставляются в variadic-аргументы — многострочные значения больше не
ломают разбор, неполный список не уводит bash в бесконечный цикл
- export "$pair": bash сам разбирает KEY=value (было export "${pair}")
- шаблоны переведены на ${VAR}-синтаксис, добавлен compose.test.yaml.tpl
для тестового режима установщика (--skip-tls без публикации портов)
- dry-run не требует root и работает вне Linux (проверка ОС пропускается)
- install.sh: учитываются --livekit-*-порты и --turn-*-порты в livekit.yaml,
исправлено экранирование апострофа в итоговой сводке
- scripts/debug-install.sh: трассировка установщика в контейнере
This commit is contained in:
@@ -16,6 +16,10 @@ export GOMODCACHE:= $(CACHE_DIR)/go-mod
|
||||
export GOPATH := $(CACHE_DIR)/gopath
|
||||
export GOTOOLCHAIN := local
|
||||
export GOLANGCI_LINT_CACHE := $(CACHE_DIR)/golangci-lint
|
||||
# Сети без доступа к storage.googleapis.com (например, домашний сервер) не могут
|
||||
# скачать модули через proxy.golang.org; goproxy.io работает как fallback.
|
||||
export GOPROXY ?= https://proxy.golang.org,direct
|
||||
export GOSUMDB ?= sum.golang.org
|
||||
export CGO_ENABLED ?= 1
|
||||
|
||||
GOFLAGS_LOCAL := -trimpath
|
||||
@@ -24,7 +28,10 @@ GO_LDFLAGS := -s -w \
|
||||
-X main.commit=$(COMMIT) \
|
||||
-X main.buildDate=$(BUILD_DATE)
|
||||
|
||||
TOOLS := $(BIN_DIR)/golangci-lint $(BIN_DIR)/gofumpt $(BIN_DIR)/sqlc $(BIN_DIR)/goose $(BIN_DIR)/govulncheck $(BIN_DIR)/gitleaks
|
||||
# Инструмент берётся из .cache/bin; если он уже установлен в системе
|
||||
# (PATH), повторная установка не нужна — это важно для CI и серверов,
|
||||
# где сборка инструментов из исходников недоступна.
|
||||
SYSTEM_TOOLS := golangci-lint gofumpt sqlc goose govulncheck gitleaks
|
||||
export PATH := $(BIN_DIR):$(PATH)
|
||||
|
||||
GO_PACKAGES := ./cmd/... ./internal/...
|
||||
@@ -43,10 +50,15 @@ help: ## Показать список целей
|
||||
@printf '\nПрофиль: %s | Кэш: %s\n' "$${PROFILE:-auto}" "$(CACHE_DIR)"
|
||||
|
||||
.PHONY: tools
|
||||
tools: $(TOOLS) ## Установить зафиксированные dev-инструменты в .cache/bin
|
||||
|
||||
$(CACHE_DIR):
|
||||
tools: ## Установить dev-инструменты в .cache/bin (уже установленные в системе пропускаются)
|
||||
@mkdir -p $(CACHE_DIR) $(BIN_DIR)
|
||||
@for tool in $(SYSTEM_TOOLS); do \
|
||||
if command -v $$tool >/dev/null 2>&1; then \
|
||||
printf ' ok %-16s %s\n' "$$tool" "$$(command -v $$tool)"; \
|
||||
else \
|
||||
$(MAKE) --no-print-directory $(BIN_DIR)/$$tool || exit 1; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
$(BIN_DIR)/golangci-lint: | $(CACHE_DIR)
|
||||
@echo "==> install golangci-lint v2.13.2"
|
||||
@@ -54,11 +66,11 @@ $(BIN_DIR)/golangci-lint: | $(CACHE_DIR)
|
||||
|
||||
$(BIN_DIR)/gofumpt: | $(CACHE_DIR)
|
||||
@echo "==> install gofumpt"
|
||||
@GOBIN=$(BIN_DIR) go install mvdan.cc/gofumpt@v0.11.0
|
||||
@GOBIN=$(BIN_DIR) go install mvdan.cc/gofumpt@v0.12.0
|
||||
|
||||
$(BIN_DIR)/sqlc: | $(CACHE_DIR)
|
||||
@echo "==> install sqlc"
|
||||
@GOBIN=$(BIN_DIR) go install github.com/sqlc-dev/sqlc/cmd/sqlc@v1.30.0
|
||||
@GOBIN=$(BIN_DIR) go install github.com/sqlc-dev/sqlc/cmd/sqlc@v1.31.1
|
||||
|
||||
$(BIN_DIR)/goose: | $(CACHE_DIR)
|
||||
@echo "==> install goose"
|
||||
@@ -66,11 +78,11 @@ $(BIN_DIR)/goose: | $(CACHE_DIR)
|
||||
|
||||
$(BIN_DIR)/govulncheck: | $(CACHE_DIR)
|
||||
@echo "==> install govulncheck"
|
||||
@GOBIN=$(BIN_DIR) go install golang.org/x/vuln/cmd/govulncheck@latest
|
||||
@GOBIN=$(BIN_DIR) go install golang.org/x/vuln/cmd/govulncheck@v1.1.4
|
||||
|
||||
$(BIN_DIR)/gitleaks: | $(CACHE_DIR)
|
||||
@echo "==> install gitleaks"
|
||||
@GOBIN=$(BIN_DIR) go install github.com/zricethezav/gitleaks/v8@latest
|
||||
@GOBIN=$(BIN_DIR) go install github.com/zricethezav/gitleaks/v8@v8.30.0
|
||||
|
||||
.PHONY: dev
|
||||
dev: ## Запустить сервер локально (данные в ./build/dev-data)
|
||||
@@ -166,6 +178,8 @@ docker-build: ## Собрать образ приложения
|
||||
--build-arg VERSION=$(VERSION) \
|
||||
--build-arg COMMIT=$(COMMIT) \
|
||||
--build-arg BUILD_DATE=$(BUILD_DATE) \
|
||||
--build-arg GOPROXY=$(GOPROXY) \
|
||||
--build-arg GOSUMDB=$(GOSUMDB) \
|
||||
-t $(DOCKER_IMAGE):$(DOCKER_TAG) .
|
||||
|
||||
.PHONY: install-dry-run
|
||||
|
||||
Reference in New Issue
Block a user