1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
pkgs = $(shell go list ./...)
PREFIX ?= $(shell pwd)
BIN_DIR ?= $(shell pwd)
DOCKER_IMAGE_NAME ?= ncabatoff/process-exporter
BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
BUILDDATE ?= $(shell date --iso-8601=seconds)
BUILDUSER ?= $(shell whoami)@$(shell hostname)
REVISION ?= $(shell git rev-parse HEAD)
TAG_VERSION ?= $(shell git describe --tags --abbrev=0)
VERSION_LDFLAGS := \
-X github.com/prometheus/common/version.Branch=$(BRANCH) \
-X github.com/prometheus/common/version.BuildDate=$(BUILDDATE) \
-X github.com/prometheus/common/version.BuildUser=$(BUILDUSER) \
-X github.com/prometheus/common/version.Revision=$(REVISION) \
-X main.version=$(TAG_VERSION)
SMOKE_TEST = -config.path packaging/conf/all.yaml -once-to-stdout-delay 1s |grep -q 'namedprocess_namegroup_memory_bytes{groupname="process-exporte",memtype="virtual"}'
all: format vet test build smoke
style:
@echo ">> checking code style"
@! gofmt -d $(shell find . -name '*.go' -print) | grep '^'
test:
@echo ">> running short tests"
go test -short $(pkgs)
format:
@echo ">> formatting code"
go fmt $(pkgs)
vet:
@echo ">> vetting code"
go vet $(pkgs)
build:
@echo ">> building code"
cd cmd/process-exporter; CGO_ENABLED=0 go build -ldflags "$(VERSION_LDFLAGS)" -o ../../process-exporter -a -tags netgo
smoke:
@echo ">> smoke testing process-exporter"
./process-exporter $(SMOKE_TEST)
integ:
@echo ">> integration testing process-exporter"
go build -o integration-tester cmd/integration-tester/main.go
go build -o load-generator cmd/load-generator/main.go
./integration-tester -write-size-bytes 65536
install:
@echo ">> installing binary"
cd cmd/process-exporter; CGO_ENABLED=0 go install -a -tags netgo
docker:
@echo ">> building docker image"
docker build -t "$(DOCKER_IMAGE_NAME):$(TAG_VERSION)" .
docker rm configs
docker create -v /packaging --name configs alpine:3.4 /bin/true
docker cp packaging/conf configs:/packaging/conf
docker run --rm --volumes-from configs "$(DOCKER_IMAGE_NAME):$(TAG_VERSION)" $(SMOKE_TEST)
dockertest:
docker run --rm -it -v `pwd`:/go/src/github.com/ncabatoff/process-exporter golang:1.23.8 make -C /go/src/github.com/ncabatoff/process-exporter test
dockerinteg:
docker run --rm -it -v `pwd`:/go/src/github.com/ncabatoff/process-exporter golang:1.23.8 make -C /go/src/github.com/ncabatoff/process-exporter build integ
.PHONY: update-go-deps
update-go-deps:
@echo ">> updating Go dependencies"
@for m in $$(go list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \
go get $$m; \
done
go mod tidy
.PHONY: all style format test vet build integ docker
|