mirror of
https://github.com/ViViDboarder/docker-duplicity-cron.git
synced 2024-11-22 12:06:28 +00:00
Add hooks to push manifest
This commit is contained in:
parent
5794cd86e1
commit
68e7586753
38
hooks/build
Executable file
38
hooks/build
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Extract arch repo from a docker tag suffix
|
||||||
|
REPO=""
|
||||||
|
case "$DOCKER_TAG" in
|
||||||
|
*amd64)
|
||||||
|
REPO="library"
|
||||||
|
;;
|
||||||
|
*arm32v5)
|
||||||
|
REPO="arm32v5"
|
||||||
|
;;
|
||||||
|
*arm32v6)
|
||||||
|
REPO="arm32v6"
|
||||||
|
;;
|
||||||
|
*arm32v7)
|
||||||
|
REPO="arm32v7"
|
||||||
|
;;
|
||||||
|
*arm64v8)
|
||||||
|
REPO="arm64v8"
|
||||||
|
;;
|
||||||
|
*i386)
|
||||||
|
REPO="i386"
|
||||||
|
;;
|
||||||
|
*ppc64le)
|
||||||
|
REPO="ppc64le"
|
||||||
|
;;
|
||||||
|
*s390x)
|
||||||
|
REPO="s390x"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
REPO="library"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--build-arg REPO="$REPO" \
|
||||||
|
--tag "$IMAGE_NAME" .
|
55
hooks/post_push
Executable file
55
hooks/post_push
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Use manifest-tool to create the manifest, given the experimental
|
||||||
|
# "docker manifest" command isn't available yet on Docker Hub.
|
||||||
|
|
||||||
|
TAG_ROOT=${DOCKER_TAG%-*}
|
||||||
|
TARGET_ARCH=""
|
||||||
|
case "$DOCKER_TAG" in
|
||||||
|
*amd64)
|
||||||
|
TARGET_ARCH="amd64"
|
||||||
|
;;
|
||||||
|
*arm32v5)
|
||||||
|
TARGET_ARCH="arm/v5"
|
||||||
|
;;
|
||||||
|
*arm32v6)
|
||||||
|
TARGET_ARCH="arm/v6"
|
||||||
|
;;
|
||||||
|
*arm32v7)
|
||||||
|
TARGET_ARCH="arm/v7"
|
||||||
|
;;
|
||||||
|
*arm64v8)
|
||||||
|
TARGET_ARCH="arm64/v8"
|
||||||
|
;;
|
||||||
|
*i386)
|
||||||
|
TARGET_ARCH="i386"
|
||||||
|
;;
|
||||||
|
*ppc64le)
|
||||||
|
TARGET_ARCH="ppc64le"
|
||||||
|
;;
|
||||||
|
*s390x)
|
||||||
|
TARGET_ARCH="s390x"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown target arch, skip manifest push"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If the tag is essentially only the arch, we use latest
|
||||||
|
if [[ "$TAG_ROOT" == "$TARGET_ARCH" ]]; then
|
||||||
|
TAG_ROOT="latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -Lo manifest-tool https://github.com/estesp/manifest-tool/releases/download/v1.0.0/manifest-tool-linux-amd64
|
||||||
|
chmod +x manifest-tool
|
||||||
|
|
||||||
|
# Generate manifest file for this repo and tag root
|
||||||
|
sed "s#{DOCKER_REPO}#${DOCKER_REPO%:*}#;s#{TAG_ROOT}#${TAG_ROOT}#" multi-arch-manifest-tmpl.yml > multi-arch-manifest.yml
|
||||||
|
./manifest-tool push from-spec --ignore-missing multi-arch-manifest.yml
|
||||||
|
|
||||||
|
# Fix arch for image tags
|
||||||
|
./manifest-tool push from-args \
|
||||||
|
--platforms "linux/$TARGET_ARCH" \
|
||||||
|
--template "$DOCKER_REPO:$DOCKER_TAG" \
|
||||||
|
--target "$DOCKER_REPO:$DOCKER_TAG"
|
@ -1,8 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
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
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
|
38
multi-arch-manifest-tmpl.yml
Normal file
38
multi-arch-manifest-tmpl.yml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
image: "{DOCKER_REPO}:{TAG_ROOT}"
|
||||||
|
manifests:
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}"
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-amd64"
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-arm32v6"
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
variant: v6
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-arm32v7"
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
variant: v7
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-arm64v8"
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
os: linux
|
||||||
|
variant: v8
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-i386"
|
||||||
|
platform:
|
||||||
|
architecture: i386
|
||||||
|
os: linux
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-s390x"
|
||||||
|
platform:
|
||||||
|
architecture: s390x
|
||||||
|
os: linux
|
||||||
|
- image: "{DOCKER_REPO}:{TAG_ROOT}-ppc64le"
|
||||||
|
platform:
|
||||||
|
architecture: ppc64le
|
||||||
|
os: linux
|
Loading…
Reference in New Issue
Block a user