|
9 | 9 | VERSION=$(shell cat "./VERSION" 2> /dev/null) |
10 | 10 | GOPROXY_VALUE=$(shell go env GOPROXY) |
11 | 11 |
|
| 12 | +# ARCHS |
| 13 | +ARCHS = amd64 arm64 |
| 14 | + |
12 | 15 | # Boiler plate for building Docker containers. |
13 | 16 | # All this must go at top of file I'm afraid. |
14 | 17 | IMAGE_PREFIX ?= quay.io/cortexproject/ |
@@ -37,8 +40,9 @@ SED ?= $(shell which gsed 2>/dev/null || which sed) |
37 | 40 | # Dependencies (i.e. things that go in the image) still need to be explicitly |
38 | 41 | # declared. |
39 | 42 | %/$(UPTODATE): %/Dockerfile |
40 | | - @echo |
41 | | - $(SUDO) docker build --build-arg=revision=$(GIT_REVISION) --build-arg=goproxyValue=$(GOPROXY_VALUE) -t $(IMAGE_PREFIX)$(shell basename $(@D)) -t $(IMAGE_PREFIX)$(shell basename $(@D)):$(IMAGE_TAG) $(@D)/ |
| 43 | + for arch in $(ARCHS); do \ |
| 44 | + $(SUDO) docker buildx build --platform linux/$$arch --build-arg=revision=$(GIT_REVISION) --build-arg=goproxyValue=$(GOPROXY_VALUE) -t $(IMAGE_PREFIX)$(shell basename $(@D)) -t $(IMAGE_PREFIX)$(shell basename $(@D)):$(IMAGE_TAG)-$$arch $(@D)/ ; \ |
| 45 | + done |
42 | 46 | @echo |
43 | 47 | @echo Please use push-multiarch-build-image to build and push build image for all supported architectures. |
44 | 48 | touch $@ |
@@ -160,7 +164,11 @@ else |
160 | 164 | exes: $(EXES) |
161 | 165 |
|
162 | 166 | $(EXES): |
163 | | - CGO_ENABLED=0 go build $(GO_FLAGS) -o $@ ./$(@D) |
| 167 | + @for arch in $(ARCHS); do \ |
| 168 | + echo "Building $@ for $$arch";\ |
| 169 | + CGO_ENABLED=0 GOARCH=$$arch GOOS=linux go build $(GO_FLAGS) -o $@-$$arch ./$(@D); \ |
| 170 | + done |
| 171 | + |
164 | 172 |
|
165 | 173 | protos: $(PROTO_GOS) |
166 | 174 |
|
@@ -272,16 +280,20 @@ clean-protos: |
272 | 280 |
|
273 | 281 | save-images: |
274 | 282 | @mkdir -p docker-images |
275 | | - for image_name in $(IMAGE_NAMES); do \ |
| 283 | + @for image_name in $(IMAGE_NAMES); do \ |
276 | 284 | if ! echo $$image_name | grep build; then \ |
277 | | - docker save $$image_name:$(IMAGE_TAG) -o docker-images/$$(echo $$image_name | tr "/" _):$(IMAGE_TAG); \ |
| 285 | + for arch in $(ARCHS); do \ |
| 286 | + docker save $$image_name:$(IMAGE_TAG)-$$arch -o docker-images/$$(echo $$image_name | tr "/" _):$(IMAGE_TAG)-$$arch; \ |
| 287 | + done;\ |
278 | 288 | fi \ |
279 | 289 | done |
280 | 290 |
|
281 | 291 | load-images: |
282 | | - for image_name in $(IMAGE_NAMES); do \ |
| 292 | + @for image_name in $(IMAGE_NAMES); do \ |
283 | 293 | if ! echo $$image_name | grep build; then \ |
284 | | - docker load -i docker-images/$$(echo $$image_name | tr "/" _):$(IMAGE_TAG); \ |
| 294 | + for arch in $(ARCHS); do \ |
| 295 | + docker load -i docker-images/$$(echo $$image_name | tr "/" _):$(IMAGE_TAG)-$$arch; \ |
| 296 | + done;\ |
285 | 297 | fi \ |
286 | 298 | done |
287 | 299 |
|
|
0 commit comments