You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #!/usr/bin/env bash
- set -eu
-
- echo "post_checkout"
- source hooks/.config
-
- echo "Install qemu + binfmt support"
- echo "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯"
- # it's an Ubuntu VM and you can install stuff.
- apt-get update
- apt-get install -y curl qemu-user-static binfmt-support jq moreutils
-
- # Sadly docker itself uses Docker EE 17.06 on Dockerhub which does not support
- # manifests.
- echo "Install a fresh docker cli binary"
- echo "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯"
-
- curl https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz | \
- tar xvz docker/docker
-
- echo "Build a usable config.json file"
- echo "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯"
- # Manifests are still experimental and enabled by a config file flag.
- # Interestingly, there is no config file and the credential parts to push
- # images is available in an environment variable. Let's create a config file to
- # combine the two things:
- #
- mkdir -p ~/.docker
- jq --null-input --argjson auths "$DOCKERCFG" '. + {auths: $auths}' | \
- jq --arg experimental enabled '. + {experimental: $experimental}' | \
- sponge ~/.docker/config.json
-
- echo "copy qemu binaries into docker build context"
- echo "⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯"
- # The current setup copies the qemu binary into the image (see Dockerfile)
- # Pro:
- # - it's easy to run non-amd64 images on amd64 systems for debugging
- # Contra:
- # - it's dead weight in the "destination" architecture and consumes space
- # Alternative:
- # - use a multistage Dockerfile (no RUN in the last stage possible of course)
- # - wait for https://github.com/moby/moby/issues/14080
- #
- for arch in ${build_architectures[@]}; do
- cp /usr/bin/qemu-${docker_qemu_arch_map[${arch}]}-static qemu-${arch}-static
- done
-
- ls -la
|