GOLANG=1.19.x
ARCH ?= linux/amd64,linux/arm64
timestamp = `date "+%Y-%m-%d"`
version = "v1.0.0"
COMMIT_ID ?= $(shell git rev-parse HEAD)
LDFLAGS = -s -w \
-X main.gitCommitId=$(COMMIT_ID) \
-X main.architecture=$(shell go env GOHOSTOS)/$(shell go env GOHOSTARCH) \
-X main.timestamp=$(timestamp) \
-X main.ver=$(version)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif
all: build
@ echo "bin/bke"
test:
go test .
.PHONY: build
build:
@echo LatestCommit: `git log --pretty='%s%b%B' -n 1`
@go build -ldflags="-s -w -X main.gitCommitId=`git rev-parse HEAD` -X main.architecture=`go env GOHOSTOS`/`go env GOHOSTARCH` \
-X main.timestamp=$(timestamp) -X main.ver=$(version)" -o bin/bke .
PLATFORMS ?= amd64 arm64
.PHONY: release # Build a multi-arch binary
release:
@echo "Building binaries...."
@$(foreach PLATFORM,$(PLATFORMS), echo -n "$(PLATFORM)..."; ARCH=$(PLATFORM) make docker-build;)
docker-build:
CGO_ENABLED=0 GOARCH=$(ARCH) go build \
-tags "remote exclude_graphdriver_btrfs btrfs_noversion exclude_graphdriver_devicemapper containers_image_openpgp" \
-ldflags "$(LDFLAGS)" \
-o bin/bke_$(ARCH) .
buildx:
@docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-* && \
docker run --privileged --rm tonistiigi/binfmt --install all && \
docker buildx rm mybuilder || true && \
docker buildx create --use --name mybuilder && \
docker buildx inspect mybuilder --bootstrap && \
docker buildx ls
docker:
@docker build -t registry.cn-hangzhou.aliyuncs.com/bocloud/bkeadm:latest .
@docker push registry.cn-hangzhou.aliyuncs.com/bocloud/bkeadm:latest
clean:
@rm -rf bin/bke*