diff --git a/.circleci/config.yml b/.circleci/config.yml index aebb7895e5..9d27c4da4e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -238,7 +238,8 @@ jobs: name: push image command: | docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - make -C ./docker version=${CIRCLE_TAG} alias=latest push + make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-x64 only_alias=true push + make -C ./docker version=${CIRCLE_TAG} alias=latest only_alias=true push publish-docker-image-arm64: executor: linux_arm64 @@ -256,6 +257,16 @@ jobs: docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-arm64 only_alias=true push + publish-docker-image-multiplatform: + executor: linux_arm64 + steps: + - checkout + - run: + name: push image + command: | + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + make -C ./docker version=${CIRCLE_TAG} platforms="x64 arm64" push-multiplatform + test-bazel7-linux: executor: ubuntu environment: @@ -334,6 +345,14 @@ workflows: ignore: /.*/ tags: only: /.*/ + - publish-docker-image-multiplatform: + filters: + tags: + only: /.*/ + requires: + - publish-docker-image-x64 + - publish-docker-image-arm64 + test-bazel7-linux: jobs: - test-bazel7-linux diff --git a/docker/Makefile b/docker/Makefile index 749ecfe940..b05e9d50b0 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -5,6 +5,7 @@ version = alias = only_alias = +platforms = image_name ?= emscripten/emsdk @@ -29,3 +30,10 @@ ifdef alias docker tag ${image_name}:${version} ${image_name}:${alias} docker push ${image_name}:${alias} endif + +push-multiplatform: .TEST +ifndef platforms + $(error argument 'platforms' is not set. Please call `make platforms="SOME_PLATFORM1 SOME_PLATFORM2..." ...`) +endif + docker manifest create ${image_name}:${version} $(foreach platform,$(platforms),--amend ${image_name}:${version}-$(platform)) + docker manifest push ${image_name}:${version}