From b97659596a6b270e907efc9e4d907f28c05f8b76 Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 22 Aug 2020 16:21:38 +0100 Subject: [PATCH 1/8] Multi arch docker support - Adds arm64 and armv8 to our amd64 images. --- .circleci/config.yml | 61 +++++++++++++++++++++++++++++++++++------ changelog.d/7921.docker | 1 + 2 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 changelog.d/7921.docker diff --git a/.circleci/config.yml b/.circleci/config.yml index 5bd2ab2b7656..96b2d286a7b7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,22 +1,36 @@ -version: 2 +version: 2.1 jobs: dockerhubuploadrelease: - machine: true + docker: + - image: docker:git steps: - checkout - - run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:${CIRCLE_TAG} . + - setup_remote_docker + - docker_prepare - run: docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - - run: docker push matrixdotorg/synapse:${CIRCLE_TAG} + - docker_build: + tag: -t matrixdotorg/synapse:${CIRCLE_TAG} + platforms: linux/amd64 + - docker_build: + tag: -t matrixdotorg/synapse:${CIRCLE_TAG} + platforms: linux/amd64,linux/arm64,linux/arm64/v8 + dockerhubuploadlatest: - machine: true + docker: + - image: docker:git steps: - checkout - - run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:latest . + - setup_remote_docker + - docker_prepare - run: docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - - run: docker push matrixdotorg/synapse:latest + - docker_build: + tag: -t matrixdotorg/synapse:latest + platforms: linux/amd64 + - docker_build: + tag: -t matrixdotorg/synapse:latest + platforms: linux/amd64,linux/arm64,linux/arm64/v8 workflows: - version: 2 build: jobs: - dockerhubuploadrelease: @@ -29,3 +43,34 @@ workflows: filters: branches: only: master + +commands: + docker_prepare: + description: Downloads the buildx cli plugin and enables multiarch images + parameters: + buildx_version: + type: string + default: "v0.4.1" + steps: + - run: apk add --no-cache curl + - run: mkdir -vp ~/.docker/cli-plugins/ ~/dockercache + - run: curl --silent -L "https://github.com/docker/buildx/releases/download/<< parameters.buildx_version >>/buildx-<< parameters.buildx_version >>.linux-amd64" > ~/.docker/cli-plugins/docker-buildx + - run: chmod a+x ~/.docker/cli-plugins/docker-buildx + - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + - run: docker context create builder + - run: docker buildx create builder --use + + docker_build: + description: Builds and pushed images to dockerhub using buildx + parameters: + platforms: + type: string + default: linux/amd64 + label: + type: string + default: --label gitsha1=${CIRCLE_SHA1} + tag: + type: string + steps: + - run: docker buildx build -f docker/Dockerfile --push --platform << parameters.platforms >> << parameters.label >> << parameters.tag >> --progress=plain . + diff --git a/changelog.d/7921.docker b/changelog.d/7921.docker new file mode 100644 index 000000000000..7107c8119022 --- /dev/null +++ b/changelog.d/7921.docker @@ -0,0 +1 @@ +Added multi-arch support (arm64,arm64/v8) for the docker images. Contributed by @maquis196. From 069171102beec48d06119cb9b5cfe6e18341e7b1 Mon Sep 17 00:00:00 2001 From: Christopher May-Townsend Date: Sat, 22 Aug 2020 16:27:35 +0100 Subject: [PATCH 2/8] Update .circleci/config.yml Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 96b2d286a7b7..c54befbf1346 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -56,6 +56,7 @@ commands: - run: mkdir -vp ~/.docker/cli-plugins/ ~/dockercache - run: curl --silent -L "https://github.com/docker/buildx/releases/download/<< parameters.buildx_version >>/buildx-<< parameters.buildx_version >>.linux-amd64" > ~/.docker/cli-plugins/docker-buildx - run: chmod a+x ~/.docker/cli-plugins/docker-buildx + # install qemu links in /proc/sys/fs/binfmt_misc on the docker instance running the circleci job - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - run: docker context create builder - run: docker buildx create builder --use @@ -73,4 +74,3 @@ commands: type: string steps: - run: docker buildx build -f docker/Dockerfile --push --platform << parameters.platforms >> << parameters.label >> << parameters.tag >> --progress=plain . - From 335d7165b9398ef4f8c82ab1288a57c8f2691f59 Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 27 Aug 2020 17:42:44 +0100 Subject: [PATCH 3/8] remove label paramater, make it a static value inline --- .circleci/config.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c54befbf1346..681e1dc4c00b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -67,10 +67,7 @@ commands: platforms: type: string default: linux/amd64 - label: - type: string - default: --label gitsha1=${CIRCLE_SHA1} tag: type: string steps: - - run: docker buildx build -f docker/Dockerfile --push --platform << parameters.platforms >> << parameters.label >> << parameters.tag >> --progress=plain . + - run: docker buildx build -f docker/Dockerfile --push --platform << parameters.platforms >> --label gitsha1=${CIRCLE_SHA1} << parameters.tag >> --progress=plain . From 15ef1976129a1d7ade2f5a76cfcd94d78acf6694 Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 27 Aug 2020 17:59:36 +0100 Subject: [PATCH 4/8] remove superflous context line and switch to default context --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 681e1dc4c00b..e80a6167bb44 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,8 +58,7 @@ commands: - run: chmod a+x ~/.docker/cli-plugins/docker-buildx # install qemu links in /proc/sys/fs/binfmt_misc on the docker instance running the circleci job - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - run: docker context create builder - - run: docker buildx create builder --use + - run: docker buildx create --use docker_build: description: Builds and pushed images to dockerhub using buildx From a23514f320a677527c8693c592fea7d1b75a7bd8 Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 27 Aug 2020 18:18:09 +0100 Subject: [PATCH 5/8] Revert "remove superflous context line and switch to default context" This reverts commit 5be977846dbae533c2d622162b20ba2bf91cd964. --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e80a6167bb44..681e1dc4c00b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,7 +58,8 @@ commands: - run: chmod a+x ~/.docker/cli-plugins/docker-buildx # install qemu links in /proc/sys/fs/binfmt_misc on the docker instance running the circleci job - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - run: docker buildx create --use + - run: docker context create builder + - run: docker buildx create builder --use docker_build: description: Builds and pushed images to dockerhub using buildx From eb5bc6466fb6c2d813f3e191e1540d8dda5a5f1f Mon Sep 17 00:00:00 2001 From: Christopher May-Townsend Date: Thu, 27 Aug 2020 18:18:39 +0100 Subject: [PATCH 6/8] Update .circleci/config.yml with notes Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 681e1dc4c00b..b02ccff251d7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,7 +58,9 @@ commands: - run: chmod a+x ~/.docker/cli-plugins/docker-buildx # install qemu links in /proc/sys/fs/binfmt_misc on the docker instance running the circleci job - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + # create a context named `builder` for the builds - run: docker context create builder + # create a buildx builder using the new context, and set it as the default - run: docker buildx create builder --use docker_build: From b81ef3e66d58a4b147ac09bec3c42105c25b2faf Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 21 Sep 2020 09:14:56 +0100 Subject: [PATCH 7/8] Adding linux/arm/v7 by request --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b02ccff251d7..b3293fe0f58b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: platforms: linux/amd64 - docker_build: tag: -t matrixdotorg/synapse:latest - platforms: linux/amd64,linux/arm64,linux/arm64/v8 + platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/arm64/v8 workflows: build: From d458efc6fe5931d3a6b4c8fbb88db78e19bc0ee0 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 11 Oct 2020 11:02:18 +0100 Subject: [PATCH 8/8] Updated platforms to include only arm64, arm/v7 and amd64. Updated changelog to reflect this change --- .circleci/config.yml | 4 ++-- changelog.d/7921.docker | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b3293fe0f58b..b10cbedd6d1b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,7 +13,7 @@ jobs: platforms: linux/amd64 - docker_build: tag: -t matrixdotorg/synapse:${CIRCLE_TAG} - platforms: linux/amd64,linux/arm64,linux/arm64/v8 + platforms: linux/amd64,linux/arm/v7,linux/arm64 dockerhubuploadlatest: docker: @@ -28,7 +28,7 @@ jobs: platforms: linux/amd64 - docker_build: tag: -t matrixdotorg/synapse:latest - platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/arm64/v8 + platforms: linux/amd64,linux/arm/v7,linux/arm64 workflows: build: diff --git a/changelog.d/7921.docker b/changelog.d/7921.docker index 7107c8119022..7cecd67c6a26 100644 --- a/changelog.d/7921.docker +++ b/changelog.d/7921.docker @@ -1 +1 @@ -Added multi-arch support (arm64,arm64/v8) for the docker images. Contributed by @maquis196. +Added multi-arch support (arm64,arm/v7) for the docker images. Contributed by @maquis196.