From 8608d8ec74e91ae84dce21df12feddcf23ae59d8 Mon Sep 17 00:00:00 2001 From: Asher Date: Fri, 16 Jul 2021 16:24:50 -0500 Subject: [PATCH] Fix Docker push It seems we need to use `docker import` with the output from `docker buildx` rather than `docker load` like we were doing when we used `docker save`. --- ci/steps/push-docker-manifest.sh | 45 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/ci/steps/push-docker-manifest.sh b/ci/steps/push-docker-manifest.sh index 08d0fdac..62ac0317 100755 --- a/ci/steps/push-docker-manifest.sh +++ b/ci/steps/push-docker-manifest.sh @@ -1,6 +1,27 @@ #!/usr/bin/env bash set -euo pipefail +# Import and push the Docker image for the provided arch. +push() { + local arch=$1 + local tag="codercom/code-server-$arch:$VERSION" + + docker import "./release-images/code-server-$arch-$VERSION.tar" "$tag" + + # We have to ensure the images exists on the remote registry in order to build + # the manifest. We don't put the arch in the tag to avoid polluting the main + # repository. These other repositories are private so they don't pollute our + # organization namespace. + docker push "$tag" + + export DOCKER_CLI_EXPERIMENTAL=enabled + + docker manifest create "codercom/code-server:$VERSION" \ + "codercom/code-server-$arch:$VERSION" \ + "codercom/code-server-$arch:$VERSION" + docker manifest push --purge "codercom/code-server:$VERSION" +} + main() { cd "$(dirname "$0")/../.." source ./ci/lib.sh @@ -10,28 +31,8 @@ main() { echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin fi - for img in ./release-images/*; do - docker load -i "$img" - done - - # We have to ensure the amd64 and arm64 images exist on the remote registry - # in order to build the manifest. - # We don't put the arch in the tag to avoid polluting the main repository. - # These other repositories are private so they don't pollute our organization namespace. - docker push "codercom/code-server-amd64:$VERSION" - docker push "codercom/code-server-arm64:$VERSION" - - export DOCKER_CLI_EXPERIMENTAL=enabled - - docker manifest create "codercom/code-server:$VERSION" \ - "codercom/code-server-amd64:$VERSION" \ - "codercom/code-server-arm64:$VERSION" - docker manifest push --purge "codercom/code-server:$VERSION" - - docker manifest create "codercom/code-server:latest" \ - "codercom/code-server-amd64:$VERSION" \ - "codercom/code-server-arm64:$VERSION" - docker manifest push --purge "codercom/code-server:latest" + push "amd64" + push "arm64" } main "$@"