shdsbilling/on-premise/main/rancher_v2.9.1/source/rancher-2.9.1/scripts/generate-linux-digests.sh

46 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
cd $(dirname $0)/..
mkdir -p bin
declare -a archs=(amd64 arm64 s390x)
if [ -z "${DRONE_TAG}" ]; then
echo "Environment variable DRONE_TAG not set"
exit 0
fi
DIGEST_TEMPLATE_FILENAME="./bin/rancher-images-digests-linux"
IMAGES_FILE=$(mktemp)
IMAGES_URL="https://github.com/rancher/rancher/releases/download/${DRONE_TAG}/rancher-images.txt"
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 10 $IMAGES_URL -O $IMAGES_FILE
for image in $(cat $IMAGES_FILE); do
INSPECT_JSON=$(skopeo inspect "docker://${image}" --raw)
MEDIATYPE=$(echo "${INSPECT_JSON}" | jq -r .mediaType)
echo "Image: ${image}, mediaType: ${MEDIATYPE}"
if [ "${MEDIATYPE}" = "application/vnd.docker.distribution.manifest.list.v2+json" ] || [ "${MEDIATYPE}" = "application/vnd.oci.image.index.v1+json" ]; then
DIGEST=$(echo -n "${INSPECT_JSON}" | sha256sum | awk '{ print $1 }')
for arch in "${archs[@]}"; do
if echo "${INSPECT_JSON}" | jq -e --arg ARCH "$arch" 'select(.manifests[].platform.architecture == $ARCH)' >/dev/null 2>&1; then
echo "docker.io/${image} sha256:${DIGEST}" >> "${DIGEST_TEMPLATE_FILENAME}-${arch}.txt"
fi
done
else
for arch in "${archs[@]}"; do
INSPECT_JSON=$(skopeo --override-arch $arch inspect "docker://${image}")
if echo "${INSPECT_JSON}" | jq -e --arg ARCH "$arch" '.Architecture == $ARCH' >/dev/null 2>&1; then
echo "Image: ${image}, arch ${arch}, FOUND"
DIGEST=$(skopeo --override-arch $arch inspect "docker://${image}" --raw | sha256sum | awk '{ print $1 }')
echo "docker.io/${image} sha256:${DIGEST}" >> "${DIGEST_TEMPLATE_FILENAME}-${arch}.txt"
else
echo "Image: ${image}, arch ${arch}, NOT_FOUND"
fi
done
fi
done
rm -f ${IMAGES_FILE}
ls -la ./bin/rancher-images-digests-linux-*