-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathMakefile
89 lines (73 loc) · 3.15 KB
/
Makefile
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
81
82
83
84
85
86
87
88
89
GOCQL_REPO ?= github.com/scylladb/gocql
DOCKER_IMAGE_TAG ?= scylla-bench
GOOS ?= $(shell uname | tr '[:upper:]' '[:lower:]')
GOARCH ?= $(shell go env GOARCH)
VERSION ?= $(shell git describe --tags 2>/dev/null || echo "dev")
COMMIT ?= $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
BUILD_DATE ?= $(shell git log -1 --format=%cd --date=format:%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u +"%Y-%m-%dT%H:%M:%SZ")
LDFLAGS_VERSION := -X github.com/scylladb/scylla-bench/internal/version.version=$(VERSION) -X github.com/scylladb/scylla-bench/internal/version.commit=$(COMMIT) -X github.com/scylladb/scylla-bench/internal/version.date=$(BUILD_DATE)
_prepare_build_dir:
@mkdir build >/dev/null 2>&1 || true
_use-custom-gocql-version:
@{\
if [ -z "${GOCQL_VERSION}" ]; then \
echo "GOCQL_VERSION is not set";\
exit 1;\
fi;\
echo "Using custom gocql commit \"${GOCQL_VERSION}\"";\
go mod edit -replace "github.com/gocql/gocql=${GOCQL_REPO}@${GOCQL_VERSION}";\
go mod tidy \
}
build: _prepare_build_dir
@echo "Building static scylla-bench"
@CGO_ENABLED=0 go build -ldflags="-s -w $(LDFLAGS_VERSION)" -o ./build/scylla-bench .
build-debug: _prepare_build_dir
@echo "Building debug version of static scylla-bench"
@CGO_ENABLED=0 go build -gcflags "all=-N -l" -ldflags="$(LDFLAGS_VERSION)" -o ./build/scylla-bench .
.PHONY: build-with-custom-gocql-version
build-with-custom-gocql-version: _use-custom-gocql-version build
.PHONY: build-debug-with-custom-gocql-version
build-debug-with-custom-gocql-version: _use-custom-gocql-version build-debug
.PHONY: build-docker-image
build-docker-image:
ifdef DOCKER_IMAGE_LABELS
@echo 'Building docker image "${DOCKER_IMAGE_TAG}" with custom labels "${DOCKER_IMAGE_LABELS}"'
@docker build --target production -t ${DOCKER_IMAGE_TAG} --label "${DOCKER_IMAGE_LABELS}" .
else
@echo 'Building docker image "${DOCKER_IMAGE_TAG}"'
@docker build --target production -t ${DOCKER_IMAGE_TAG} .
endif
.PHONY: build-sct-docker-image
build-sct-docker-image: build
ifdef DOCKER_IMAGE_LABELS
@echo 'Building sct docker image "${DOCKER_IMAGE_TAG}" with custom labels "${DOCKER_IMAGE_LABELS}"'
@docker build --target production-sct -t ${DOCKER_IMAGE_TAG} --label "${DOCKER_IMAGE_LABELS}" -f ./Dockerfile build/
else
@echo 'Building sct docker image "${DOCKER_IMAGE_TAG}"'
@docker build --target production-sct -t ${DOCKER_IMAGE_TAG} -f ./Dockerfile build/
endif
.PHONY: fmt
fmt:
@go tool gofumpt -w -extra .
.PHONY: test
test:
@go test -covermode=atomic -race -coverprofile=coverage.txt -timeout 5m -json -v ./... 2>&1 | go tool gotestfmt -showteststatus
.PHONY: check
check:
@go tool golangci-lint run
.PHONY: fieldalign
fieldalign:
@go tool fieldalignment -fix github.com/scylladb/scylla-bench
@go tool fieldalignment -fix github.com/scylladb/scylla-bench/internal/version
@go tool fieldalignment -fix github.com/scylladb/scylla-bench/random
@go tool fieldalignment -fix github.com/scylladb/scylla-bench/pkg/workloads
@go tool fieldalignment -fix github.com/scylladb/scylla-bench/pkg/results
.PHONY: clean-bin
clean-bin:
@rm -rf build
.PHONY: clean-results
clean-results:
@rm -rf coverage.txt
@rm -rf dist
.PHONY: clean
clean: clean-bin clean-results