|
15 | 15 | PKG = sigs.k8s.io/blobfuse-csi-driver
|
16 | 16 | GIT_COMMIT ?= $(shell git rev-parse HEAD)
|
17 | 17 | REGISTRY ?= andyzhangx
|
| 18 | +REGISTRY_NAME ?= $(shell echo $(REGISTRY) | sed "s/.azurecr.io//g") |
18 | 19 | IMAGE_NAME = blobfuse-csi
|
19 | 20 | IMAGE_VERSION ?= v0.6.0
|
20 | 21 | # Use a custom version for E2E tests if we are in Prow
|
21 |
| -ifdef AZURE_CREDENTIALS |
| 22 | +ifdef CI |
| 23 | +ifndef PUBLISH |
22 | 24 | override IMAGE_VERSION := e2e-$(GIT_COMMIT)
|
23 | 25 | endif
|
| 26 | +endif |
24 | 27 | IMAGE_TAG = $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_VERSION)
|
25 |
| -IMAGE_TAG_LATEST = $(REGISTRY_NAME)/$(IMAGE_NAME):latest |
| 28 | +IMAGE_TAG_LATEST = $(REGISTRY)/$(IMAGE_NAME):latest |
26 | 29 | BUILD_DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
27 | 30 | LDFLAGS ?= "-X ${PKG}/pkg/blobfuse.driverVersion=${IMAGE_VERSION} -X ${PKG}/pkg/blobfuse.gitCommit=${GIT_COMMIT} -X ${PKG}/pkg/blobfuse.buildDate=${BUILD_DATE} -s -w -extldflags '-static'"
|
28 | 31 | GINKGO_FLAGS = -ginkgo.noColor -ginkgo.v
|
29 | 32 | GO111MODULE = off
|
30 |
| -export GO111MODULE |
| 33 | +GOPATH ?= $(shell go env GOPATH) |
| 34 | +GOBIN ?= $(GOPATH)/bin |
| 35 | +DOCKER_CLI_EXPERIMENTAL = enabled |
| 36 | +export GOPATH GOBIN GO111MODULE DOCKER_CLI_EXPERIMENTAL |
31 | 37 |
|
32 | 38 | all: blobfuse
|
33 | 39 |
|
@@ -87,16 +93,39 @@ container: blobfuse
|
87 | 93 | docker build --no-cache -t $(IMAGE_TAG) -f ./pkg/blobfuseplugin/Dockerfile .
|
88 | 94 |
|
89 | 95 | .PHONY: blobfuse-container
|
90 |
| -blobfuse-container: blobfuse |
91 |
| - docker build --no-cache -t $(IMAGE_TAG) -f ./pkg/blobfuseplugin/Dockerfile . |
| 96 | +blobfuse-container: |
| 97 | + docker buildx rm container-builder || true |
| 98 | + docker buildx create --use --name=container-builder |
| 99 | +ifdef CI |
| 100 | + az acr login --name $(REGISTRY_NAME) |
| 101 | + docker buildx build --no-cache --build-arg LDFLAGS=${LDFLAGS} -t $(IMAGE_TAG) -f ./pkg/blobfuseplugin/Dockerfile --platform="linux/amd64" --push . |
| 102 | + |
| 103 | + docker manifest create $(IMAGE_TAG) $(IMAGE_TAG) |
| 104 | + docker manifest inspect $(IMAGE_TAG) |
| 105 | +ifdef PUBLISH |
| 106 | + docker manifest create $(IMAGE_TAG_LATEST) $(IMAGE_TAG) |
| 107 | + docker manifest inspect $(IMAGE_TAG_LATEST) |
| 108 | +endif |
| 109 | +endif |
92 | 110 |
|
93 | 111 | .PHONY: push
|
94 |
| -push: blobfuse-container |
| 112 | +push: |
| 113 | +ifdef CI |
| 114 | + docker manifest push --purge $(IMAGE_TAG) |
| 115 | +else |
95 | 116 | docker push $(IMAGE_TAG)
|
| 117 | +endif |
96 | 118 |
|
97 | 119 | .PHONY: push-latest
|
98 |
| -push-latest: blobfuse-container |
99 |
| - docker push $(IMAGE_TAG) |
| 120 | +push-latest: |
| 121 | +ifdef CI |
| 122 | + docker manifest push --purge $(IMAGE_TAG_LATEST) |
| 123 | +else |
| 124 | + docker push $(IMAGE_TAG_LATEST) |
| 125 | +endif |
| 126 | + |
| 127 | +.PHONY: build-push |
| 128 | +build-push: blobfuse-container |
100 | 129 | docker tag $(IMAGE_TAG) $(IMAGE_TAG_LATEST)
|
101 | 130 | docker push $(IMAGE_TAG_LATEST)
|
102 | 131 |
|
|
0 commit comments