Files
mrleo1nidandClaude Opus 5 49d549463a
CI / test (push) Successful in 56s
CI/CD в Gitea Actions и установка одной командой
Workflow CI гоняет gofmt, vet, тесты и сборку на каждый push в main;
workflow Release по тегу v* собирает бинарники под linux/amd64 и arm64,
считает контрольные суммы и публикует релиз через API Gitea.

Оба workflow забирают код через git, а не actions/checkout: это
JS-действие, которому нужен Node внутри контейнера, а в образе golang его
нет. Заодно сборка перестала зависеть от доступности github.com, что для
self-hosted инстанса существенно.

Скрипт deploy/get.sh ставит последний релиз одной командой: определяет
архитектуру, забирает файлы релиза, сверяет sha256 (бинарник ставится с
правами root) и передаёт управление install.sh. Обновление — та же
команда.

Версия сборки попадает в бинарник через ldflags, доступна как
`pzmanager version` и видна в панели на вкладке «Настройки»: без неё
нельзя понять, какой релиз стоит на сервере.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 19:27:30 +03:00

32 lines
951 B
Makefile

BINARY := pzmanager
# Версия попадает в бинарник и видна в панели и в `pzmanager version`.
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
LDFLAGS := -s -w -X main.version=$(VERSION)
.PHONY: build build-linux test vet fmt run clean
## build: собрать под текущую платформу
build:
go build -ldflags "$(LDFLAGS)" -o $(BINARY) ./cmd/pzmanager
## build-linux: собрать статичный бинарник для Ubuntu (amd64)
build-linux:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o $(BINARY) ./cmd/pzmanager
## test: прогнать тесты
test:
go test ./...
vet:
go vet ./...
fmt:
gofmt -w cmd internal web
## run: запустить панель локально с конфигом в ./dev
run:
go run ./cmd/pzmanager serve --config ./dev/config.yaml --listen 127.0.0.1:8080
clean:
rm -f $(BINARY)