Files
edgeguard-native/Makefile
Debian aa14b6b2be feat: Networks-Members für bridge/bond + System-Rules-Card + Theme-Revert
* Migration 0011: members JSONB für network_interfaces. Bridge/bond
  brauchen ≥1 Member (NOT VALID-Constraint, schont bestehende Rows).
  vlan/wireguard/ethernet ignorieren das Feld.
* Backend-Validation pro Typ: vlan→parent+vlan_id, bridge/bond→members,
  ethernet/wireguard→keins. Repo serialisiert via JSONB.
* Form Networks: Members-Multi-Select für bridge/bond, Composition-
  Spalte zeigt vlan-tag bzw. Member-Liste.
* Firewall-Rules-Tab zeigt jetzt SystemRulesCard ganz oben — Anti-
  Lockout (SSH/443), stateful baseline, default-deny-Erklärung.
* Theme-Tokens 1:1 mail-gateway: fontSize 13, controlHeight 34
  (vorher zu dichtes 12/28). Density kommt vom DataTable size="small".
* Makefile publish-amd64 lädt jetzt auch edgeguard-ui_*_all.deb und
  edgeguard_*_all.deb hoch (vorher nur api).
* Version 1.0.0 → 1.0.3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:19:07 +02:00

108 lines
3.8 KiB
Makefile

# EdgeGuard — Build-System.
# Cross-Compile für Debian 13 + Ubuntu 24.04 auf amd64 und arm64.
# CGO_ENABLED=0 (statische Binaries, keine libre2-/CGO-Abhängigkeit in v1).
GO ?= $(shell which go || echo /usr/local/go/bin/go)
MODULE := git.netcell-it.de/projekte/edgeguard-native
BINARIES := edgeguard-api edgeguard-scheduler edgeguard-ctl
VERSION := $(shell cat VERSION 2>/dev/null || echo 0.0.1-dev)
LDFLAGS := -s -w -X main.version=$(VERSION)
GOFLAGS := -trimpath -mod=readonly
export CGO_ENABLED ?= 0
.PHONY: all help build test lint tidy clean ui \
build-linux-amd64 build-linux-arm64 \
deb deb-amd64 deb-arm64 \
publish publish-amd64 publish-arm64
all: build
help:
@echo "EdgeGuard build targets:"
@echo " build Build all binaries for the host architecture (build/host/)"
@echo " build-linux-amd64 Cross-compile all binaries for linux/amd64 (build/amd64/)"
@echo " build-linux-arm64 Cross-compile all binaries for linux/arm64 (build/arm64/)"
@echo " test go test ./..."
@echo " lint go vet + staticcheck (if installed)"
@echo " tidy go mod tidy"
@echo " ui Build management-ui (vite)"
@echo " deb-amd64 Cross-compile + build edgeguard_<ver>_amd64.deb"
@echo " deb-arm64 Cross-compile + build edgeguard_<ver>_arm64.deb"
@echo " deb Build both amd64 and arm64 .deb packages"
@echo " publish-amd64 Build amd64 deb AND upload to Gitea"
@echo " publish-arm64 Same for arm64"
@echo " publish publish-amd64 + publish-arm64"
@echo " clean Remove build artifacts"
build:
@mkdir -p build/host
@for bin in $(BINARIES); do \
echo " -> build/host/$$bin"; \
$(GO) build $(GOFLAGS) -ldflags '$(LDFLAGS)' \
-o build/host/$$bin ./cmd/$$bin || exit 1; \
done
build-linux-amd64:
@mkdir -p build/amd64
@for bin in $(BINARIES); do \
echo " -> build/amd64/$$bin"; \
GOOS=linux GOARCH=amd64 $(GO) build $(GOFLAGS) -ldflags '$(LDFLAGS)' \
-o build/amd64/$$bin ./cmd/$$bin || exit 1; \
done
build-linux-arm64:
@mkdir -p build/arm64
@for bin in $(BINARIES); do \
echo " -> build/arm64/$$bin"; \
GOOS=linux GOARCH=arm64 $(GO) build $(GOFLAGS) -ldflags '$(LDFLAGS)' \
-o build/arm64/$$bin ./cmd/$$bin || exit 1; \
done
test:
$(GO) test $(GOFLAGS) ./...
lint:
$(GO) vet ./...
@command -v staticcheck >/dev/null && staticcheck ./... || echo "staticcheck not installed, skipping"
tidy:
$(GO) mod tidy
ui:
@echo " -> management-ui (vite build, version $(VERSION))"
@cd management-ui && \
if [ -x "$$(command -v bun)" ]; then bun install --silent && bun run build; \
else npm install --silent && npm run build; fi
deb-amd64: build-linux-amd64 ui
@./scripts/apt-repo/build-package.sh amd64 $(VERSION)
deb-arm64: build-linux-arm64 ui
@./scripts/apt-repo/build-package.sh arm64 $(VERSION)
deb: deb-amd64 deb-arm64
GITEA_DEB_URL := https://git.netcell-it.de/api/packages/projekte/debian/pool/trixie/main/upload
publish-amd64: deb-amd64
@TOK="$$(cat $$HOME/.gitea-token | tr -d '\n')"; \
if [ -z "$$TOK" ]; then echo "publish: ~/.gitea-token is empty"; exit 1; fi; \
for f in edgeguard-api_$(VERSION)_amd64.deb edgeguard-ui_$(VERSION)_all.deb edgeguard_$(VERSION)_all.deb; do \
echo " -> publish $$f"; \
curl -sS -H "Authorization: token $$TOK" --upload-file build/deb/$$f $(GITEA_DEB_URL); \
echo ""; \
done
publish-arm64: deb-arm64
@TOK="$$(cat $$HOME/.gitea-token | tr -d '\n')"; \
if [ -z "$$TOK" ]; then echo "publish: ~/.gitea-token is empty"; exit 1; fi; \
echo " -> publish edgeguard-api_$(VERSION)_arm64.deb"; \
curl -sS -H "Authorization: token $$TOK" \
--upload-file build/deb/edgeguard-api_$(VERSION)_arm64.deb \
$(GITEA_DEB_URL)
publish: publish-amd64 publish-arm64
clean:
rm -rf build/