Files
linuxkit/scripts/kernels/debian.sh
Rolf Neugebauer 47ed84ee68 kernels: Don't pull to check if image exists on hub
Doing a "docker pull" to check if an image exist on hub
takes a long time for the number of images, in particular
in the linuxkit/kernel-mainline repo.

Instead, get a list of tags on Hub and check that way. This
does not check if the image was signed, but should be good
enough.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-04-29 11:24:01 +01:00

30 lines
915 B
Bash
Executable File

#! /bin/sh
REPO="linuxkit/kernel-debian"
BASE_URL=http://mirrors.kernel.org/debian/pool/main/l/linux/
TAGS=$(curl --silent -f -lSL https://registry.hub.docker.com/v1/repositories/${REPO}/tags)
ARCH=amd64
LINKS=$(curl -s ${BASE_URL}/ | sed -n 's/.*href="\([^"]*\).*/\1/p')
# Just get names for 4.x kernels
KERNELS=$(echo $LINKS | \
grep -o "linux-image-4\.[0-9]\+\.[0-9]\+-[0-9]\+-${ARCH}[^ ]\+_${ARCH}\.deb")
for KERN_DEB in $KERNELS; do
VERSION=$(echo $KERN_DEB | \
grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+-[0-9]\+" | head -1)
if echo $TAGS | grep -q "\"${VERSION}\""; then
echo "${REPO}:${VERSION} exists"
continue
fi
URLS="${BASE_URL}/${KERN_DEB}"
# Doesn't exist build and push
docker build -t ${REPO}:${VERSION} -f Dockerfile.deb --no-cache \
--build-arg DEB_URLS="${URLS}" . &&
DOCKER_CONTENT_TRUST=1 docker push ${REPO}:${VERSION}
done