GOBUILD = GOEXPERIMENT=jsonv2 CGO_ENABLED=0 go build -trimpath PREFIX ?= $(shell pwd) BUILDTIME = ${shell TZ=Asia/Shanghai date +%Y-%m-%dT%H:%M:%S%z} BUILD_PATH = ${PREFIX}/build ifdef VERSION VERSION=${VERSION} else VERSION=$(shell git describe --tags --always --dirty="-dirty") endif ifdef GITCOMMIT GITCOMMIT=${GITCOMMIT} else GITCOMMIT=$(shell git rev-parse HEAD) endif # Go Debug Build ifdef DEBUG_BUILD GOBUILD=CGO_ENABLED=0 go build -gcflags=all="-N -l" endif # Go Reproducible Build ifdef REPRODUCIBLE_BUILD GOBUILD=CGO_ENABLED=0 go build -trimpath -ldflags=-buildid= BUILDTIME=0 endif LDFLAG=-ldflags "-X git.ifooth.com/common/pkg/version.Version=${VERSION} \ -X git.ifooth.com/common/pkg/version.GitCommit=${GITCOMMIT} \ -X git.ifooth.com/common/pkg/version.BuildTime=${BUILDTIME}" # 逃逸分析 GCFLAG=-gcflags="" ifdef GO_GCFLAG GCFLAG=-gcflags="${GO_GCFLAG}" endif .PHONY: lint: @echo ">> linting" GOEXPERIMENT=jsonv2 golangci-lint fmt GOEXPERIMENT=jsonv2 golangci-lint run ./... .PHONY: test test: GOEXPERIMENT=jsonv2 go test -count=1 -cover ./... .PHONY: benchmark benchmark: @echo ">> benchmark not support" .PHONY: build build: @echo ">> rebuilding binaries" ${GOBUILD} ${LDFLAG} ${GCFLAG} -o ./bin/ai ./main.go .PHONY: docker docker: build @docker build -t ccr.ccs.tencentyun.com/ifooth/ifooth-ai:latest . @docker push ccr.ccs.tencentyun.com/ifooth/ifooth-ai:latest