image: docker:19 services: - docker:19-dind variables: DOCKER_DRIVER: overlay DOCKER_TLS_CERTDIR: "" stages: - buildx - deploy buildx: image: docker:19-git stage: buildx variables: GIT_STRATEGY: none artifacts: paths: - buildx expire_in: 1 hour services: - docker:19-dind script: - export DOCKER_BUILDKIT=1 - git clone git://github.com/docker/buildx ./docker-buildx - docker build --platform=local -o . ./docker-buildx deploy: image: docker:19 stage: deploy services: - name: docker:19-dind command: ["--experimental"] before_script: - mkdir -p ~/.docker/cli-plugins - mv buildx ~/.docker/cli-plugins/docker-buildx - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker buildx create --use --name mybuilder - docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --push -t $IMAGE_TAG . - docker pull $IMAGE_TAG - docker tag $IMAGE_TAG $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest