From 6a7bc2f9973630d3fa92ef9e1b500089f2848ab1 Mon Sep 17 00:00:00 2001 From: telsch Date: Sat, 11 Apr 2020 16:09:00 +0200 Subject: [PATCH] docker: Add hooks for arm build https://stackoverflow.com/questions/54578066/how-to-build-a-docker-image-on-a-specific-architecture-with-docker-hub https://github.com/docker/hub-feedback/issues/1261 https://aquarat.co.za/tag/dockerhub/ --- docker/hooks/build | 8 ++++++++ docker/hooks/post_checkout | 16 ++++++++++++++++ docker/hooks/pre_build | 8 ++++++++ 3 files changed, 32 insertions(+) create mode 100755 docker/hooks/build create mode 100755 docker/hooks/post_checkout create mode 100755 docker/hooks/pre_build diff --git a/docker/hooks/build b/docker/hooks/build new file mode 100755 index 00000000000..b00b4ed2813 --- /dev/null +++ b/docker/hooks/build @@ -0,0 +1,8 @@ +#!/bin/bash + +docker build \ + --file "${DOCKERFILE_PATH}" \ + --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ + --build-arg VCS_REF="$(git rev-parse --short HEAD)" \ + --tag "$IMAGE_NAME" \ + . diff --git a/docker/hooks/post_checkout b/docker/hooks/post_checkout new file mode 100755 index 00000000000..2e1820343eb --- /dev/null +++ b/docker/hooks/post_checkout @@ -0,0 +1,16 @@ +#!/bin/bash + +BUILD_ARCH=$(echo "${DOCKERFILE_PATH}" | cut -d '.' -f 2) + +[ "${BUILD_ARCH}" == "Dockerfile" ] && \ + { echo 'qemu-user-static: Download not required for current arch'; exit 0; } + +QEMU_USER_STATIC_ARCH=$([ "${BUILD_ARCH}" == "armhf" ] && echo "${BUILD_ARCH::-2}" || echo "${BUILD_ARCH}") +QEMU_USER_STATIC_DOWNLOAD_URL="https://github.com/multiarch/qemu-user-static/releases/download" +QEMU_USER_STATIC_LATEST_TAG=$(curl -s https://api.github.com/repos/multiarch/qemu-user-static/tags \ + | grep 'name.*v[0-9]' \ + | head -n 1 \ + | cut -d '"' -f 4) + +curl -SL "${QEMU_USER_STATIC_DOWNLOAD_URL}/${QEMU_USER_STATIC_LATEST_TAG}/x86_64_qemu-${QEMU_USER_STATIC_ARCH}-static.tar.gz" \ + | tar xzv diff --git a/docker/hooks/pre_build b/docker/hooks/pre_build new file mode 100755 index 00000000000..5444851651e --- /dev/null +++ b/docker/hooks/pre_build @@ -0,0 +1,8 @@ +#!/bin/bash + +BUILD_ARCH=$(echo "${DOCKERFILE_PATH}" | cut -d '.' -f 2) + +[ "${BUILD_ARCH}" == "Dockerfile" ] && \ + { echo 'qemu-user-static: Registration not required for current arch'; exit 0; } + +docker run --rm --privileged multiarch/qemu-user-static:register --reset