All checks were successful
check / check (push) Successful in 33s
Place the backend Dockerfile at repo root as Dockerfile.backend so the build context includes .git, giving git describe access for version stamping. Fix .gitignore pattern to anchor /netwatch-server so it does not exclude cmd/netwatch-server/. Remove .git from .dockerignore. Update CI workflow and backend Makefile docker target.
54 lines
1.1 KiB
Makefile
54 lines
1.1 KiB
Makefile
UNAME_S := $(shell uname -s)
|
|
VERSION := $(shell git describe --always --dirty)
|
|
BUILDARCH := $(shell uname -m)
|
|
BINARY := netwatch-server
|
|
|
|
GOLDFLAGS += -X main.Version=$(VERSION)
|
|
GOLDFLAGS += -X main.Buildarch=$(BUILDARCH)
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
GOFLAGS := -ldflags "$(GOLDFLAGS)"
|
|
else
|
|
GOFLAGS = -ldflags "-linkmode external -extldflags -static $(GOLDFLAGS)"
|
|
endif
|
|
|
|
.PHONY: all build test lint fmt fmt-check check docker hooks run clean
|
|
|
|
all: build
|
|
|
|
build: ./$(BINARY)
|
|
|
|
./$(BINARY): $(shell find . -name '*.go' -type f) go.mod go.sum
|
|
go build -o $@ $(GOFLAGS) ./cmd/netwatch-server/
|
|
|
|
test:
|
|
timeout 30 go test ./...
|
|
|
|
lint:
|
|
golangci-lint run ./...
|
|
|
|
fmt:
|
|
go fmt ./...
|
|
|
|
fmt-check:
|
|
@test -z "$$(gofmt -l .)" || \
|
|
(echo "Files not formatted:"; gofmt -l .; exit 1)
|
|
|
|
check: test lint fmt-check
|
|
|
|
docker:
|
|
timeout 300 docker build -t netwatch-server -f ../Dockerfile.backend ..
|
|
|
|
hooks:
|
|
@printf '#!/bin/sh\ncd backend && make check\n' > \
|
|
$$(git rev-parse --show-toplevel)/.git/hooks/pre-commit
|
|
@chmod +x \
|
|
$$(git rev-parse --show-toplevel)/.git/hooks/pre-commit
|
|
@echo "Pre-commit hook installed"
|
|
|
|
run: build
|
|
./$(BINARY)
|
|
|
|
clean:
|
|
rm -f ./$(BINARY)
|