|
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