a00bd620a1
Self-hostable game-server control panel: controller + agent + 26 game modules. One-line install (prebuilt release, no Go required): curl -fsSL https://git.pdxtechs.com/dbledeez/panel/raw/branch/main/install.sh | sudo bash Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
56 lines
2.1 KiB
Makefile
56 lines
2.1 KiB
Makefile
# Panel — build/test/install entrypoints.
|
|
#
|
|
# The single source of truth for the build version is
|
|
# github.com/dbledeez/panel/pkg/version.Version (defaults to "dev"),
|
|
# injected here via -ldflags -X. Override with: make build VERSION=v1.2.3
|
|
|
|
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
|
|
LDFLAGS = -s -w -X github.com/dbledeez/panel/pkg/version.Version=$(VERSION)
|
|
GOFLAGS = -trimpath
|
|
BIN_DIR ?= bin
|
|
PREFIX ?= /opt/panel
|
|
|
|
# Windows-friendly: `make build` on Windows produces .exe automatically
|
|
# because go respects GOOS; output names stay extension-less here and Go
|
|
# appends .exe itself only with -o omitted, so be explicit:
|
|
EXE :=
|
|
ifeq ($(OS),Windows_NT)
|
|
EXE := .exe
|
|
endif
|
|
|
|
.PHONY: all build test vet docker version install-local clean
|
|
|
|
all: build
|
|
|
|
build:
|
|
go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/controller$(EXE) ./controller/cmd/controller
|
|
go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/agent$(EXE) ./agent/cmd/agent
|
|
go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/panelctl$(EXE) ./controller/cmd/panelctl
|
|
|
|
test:
|
|
go test ./controller/... ./agent/... ./pkg/...
|
|
|
|
vet:
|
|
go vet ./controller/... ./agent/... ./pkg/...
|
|
|
|
# Production container images (see deploy/docker-compose.yml).
|
|
docker:
|
|
docker build -f deploy/Dockerfile.controller --build-arg VERSION=$(VERSION) -t panel-controller:$(VERSION) .
|
|
docker build -f deploy/Dockerfile.agent --build-arg VERSION=$(VERSION) -t panel-agent:$(VERSION) .
|
|
|
|
version:
|
|
@echo $(VERSION)
|
|
|
|
# Install binaries + modules + systemd units on the local Linux box.
|
|
# Root-only step of install.sh; useful for upgrades from a git checkout.
|
|
install-local: build
|
|
install -d $(PREFIX)/bin $(PREFIX)/data
|
|
install -m 0755 $(BIN_DIR)/controller $(BIN_DIR)/agent $(BIN_DIR)/panelctl $(PREFIX)/bin/
|
|
cp -r modules $(PREFIX)/
|
|
install -m 0644 deploy/systemd/panel-controller.service deploy/systemd/panel-agent.service /etc/systemd/system/
|
|
systemctl daemon-reload
|
|
@echo "installed to $(PREFIX); enable with: systemctl enable --now panel-controller panel-agent"
|
|
|
|
clean:
|
|
rm -rf $(BIN_DIR)
|