Makefile
1 .PHONY: fmt 2 fmt: ## Run go fmt against code. 3 go fmt ./... 4 5 .PHONY: vet 6 vet: ## Run go vet against code. 7 go mod tidy && go mod vendor 8 go vet ./... 9 10 .PHONY: test 11 test: vet ## Run tests 12 go test -v -coverpkg=./... ./pkg/... 13 14 ##@ Linter 15 16 .PHONY: install-golint 17 install-golint: 18 @if ! command -v golangci-lint &> /dev/null; then \ 19 echo "installing golangci-lint..."; \ 20 go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; \ 21 else \ 22 echo "golangci-lint already installed"; \ 23 fi 24 25 .PHONY: golint 26 golint: fmt install-golint 27 golangci-lint run -v --fix ./... 28 29 VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || git rev-parse --short HEAD 2>/dev/null || echo "dev") 30 GIT_COMMIT ?= $(shell git rev-parse HEAD 2>/dev/null || echo "unknown") 31 BUILD_TIME ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") 32 LDFLAGS := -X 'github.com/alibaba/opensandbox/internal/version.Version=$(VERSION)' \ 33 -X 'github.com/alibaba/opensandbox/internal/version.BuildTime=$(BUILD_TIME)' \ 34 -X 'github.com/alibaba/opensandbox/internal/version.GitCommit=$(GIT_COMMIT)' 35 36 .PHONY: build 37 build: vet ## Build the binary. 38 @mkdir -p bin 39 go build -ldflags "$(LDFLAGS)" -o bin/execd main.go 40 41 .PHONY: multi-build 42 multi-build: vet ## Cross-compile for linux/windows/darwin amd64/arm64. 43 @mkdir -p bin 44 @for os in linux windows darwin; do \ 45 for arch in amd64 arm64; do \ 46 out=bin/execd_$(VERSION)_$${os}_$${arch}; \ 47 [ "$${os}" = "windows" ] && out="$${out}.exe"; \ 48 echo ">> building $${os}/$${arch} -> $${out}"; \ 49 GOOS=$${os} GOARCH=$${arch} CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o "$${out}" main.go || exit $$?; \ 50 done; \ 51 done