You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.7 KiB
95 lines
2.7 KiB
DOCKER_TAG ?= minitor-go-${USER} |
|
VERSION ?= $(shell git describe --tags --dirty) |
|
GOFILES = *.go |
|
# Multi-arch targets are generated from this |
|
TARGET_ALIAS = minitor-linux-amd64 minitor-linux-arm minitor-linux-arm64 minitor-darwin-amd64 |
|
TARGETS = $(addprefix dist/,$(TARGET_ALIAS)) |
|
# |
|
# Default make target will run tests |
|
.DEFAULT_GOAL = test |
|
|
|
# Build all static Minitor binaries |
|
.PHONY: all |
|
all: $(TARGETS) |
|
|
|
# Build all static Linux Minitor binaries. Used in Docker images |
|
.PHONY: all-linux |
|
all-linux: $(filter dist/minitor-linux-%,$(TARGETS)) |
|
|
|
# Build minitor for the current machine |
|
minitor: $(GOFILES) |
|
@echo Version: $(VERSION) |
|
go build -ldflags '-X "main.version=${VERSION}"' -o minitor |
|
|
|
.PHONY: build |
|
build: minitor |
|
|
|
# Run minitor for the current machine |
|
.PHONY: run |
|
run: minitor |
|
./minitor -debug |
|
|
|
.PHONY: run-metrics |
|
run-metrics: minitor |
|
./minitor -debug -metrics |
|
|
|
# Run all tests |
|
.PHONY: test |
|
test: |
|
go test -coverprofile=coverage.out |
|
go tool cover -func=coverage.out |
|
@go tool cover -func=coverage.out | awk -v target=80.0% \ |
|
'/^total:/ { print "Total coverage: " $$3 " Minimum coverage: " target; if ($$3+0.0 >= target+0.0) print "ok"; else { print "fail"; exit 1; } }' |
|
|
|
# Installs pre-commit hooks |
|
.PHONY: install-hooks |
|
install-hooks: |
|
pre-commit install --install-hooks |
|
|
|
# Runs pre-commit checks on files |
|
.PHONY: check |
|
check: |
|
pre-commit run --all-files |
|
|
|
.PHONY: clean |
|
clean: |
|
rm -f ./minitor |
|
rm -f ./coverage.out |
|
rm -fr ./dist |
|
|
|
.PHONY: docker-build |
|
docker-build: |
|
docker build -f ./Dockerfile.multi-stage -t $(DOCKER_TAG)-linux-amd64 . |
|
|
|
.PHONY: docker-run |
|
docker-run: docker-build |
|
docker run --rm -v $(shell pwd)/config.yml:/root/config.yml $(DOCKER_TAG) |
|
|
|
## Multi-arch targets |
|
$(TARGETS): $(GOFILES) |
|
mkdir -p ./dist |
|
GOOS=$(word 2, $(subst -, ,$(@))) GOARCH=$(word 3, $(subst -, ,$(@))) CGO_ENABLED=0 \ |
|
go build -ldflags '-X "main.version=${VERSION}"' -a -installsuffix nocgo \ |
|
-o $@ |
|
|
|
.PHONY: $(TARGET_ALIAS) |
|
$(TARGET_ALIAS): |
|
$(MAKE) $(addprefix dist/,$@) |
|
|
|
# Arch specific docker build targets |
|
.PHONY: docker-build-arm |
|
docker-build-arm: dist/minitor-linux-arm |
|
docker build --build-arg REPO=arm32v7 --build-arg ARCH=arm . -t ${DOCKER_TAG}-linux-arm |
|
|
|
.PHONY: docker-build-arm64 |
|
docker-build-arm64: dist/minitor-linux-arm64 |
|
docker build --build-arg REPO=arm64v8 --build-arg ARCH=arm64 . -t ${DOCKER_TAG}-linux-arm64 |
|
|
|
# Cross run on host architechture |
|
.PHONY: docker-run-arm |
|
docker-run-arm: docker-build-arm |
|
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --name $(DOCKER_TAG)-run ${DOCKER_TAG}-linux-arm |
|
|
|
.PHONY: docker-run-arm64 |
|
docker-run-arm64: docker-build-arm64 |
|
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --name $(DOCKER_TAG)-run ${DOCKER_TAG}-linux-arm64
|
|
|