mirror/mirror.sh

61 lines
1.4 KiB
Bash
Raw Normal View History

2020-12-23 18:39:02 +05:00
#!/usr/bin/env bash
# The Docker Image Mirror script.
WHAT_TO_MIRROR=()
DESTINATION_REGISTRY=code.pztrn.name/containers/mirror
REGISTRY_USER=$1
REGISTRY_PASSWORD=$2
2020-12-23 18:39:02 +05:00
MIRROR_CONFIGS=$(ls ./images/*.sh)
for file in "${MIRROR_CONFIGS[@]}"; do
2020-12-23 18:39:02 +05:00
echo "Importing ${file}..."
# shellcheck disable=SC2086
WHAT_TO_MIRROR=( "${WHAT_TO_MIRROR[@]}" "$(bash ${file})" )
2020-12-23 18:39:02 +05:00
done
echo "Images to mirror: ${WHAT_TO_MIRROR[*]}"
2020-12-23 18:39:02 +05:00
function mirror() {
image=$1
image_name=$(echo "${image}" | cut -d":" -f 1)
image_version=$(echo "${image}" | cut -d":" -f 2)
echo -n "Mirroring ${image}... "
if ! docker pull "${image}" &> /dev/null; then
2020-12-23 18:39:02 +05:00
echo "FAIL"
exit
fi
image_hash=$(docker images -a | grep "^${image_name}" | grep "${image_version}" | awk "{' print $3 '}")
2020-12-23 18:39:02 +05:00
echo -n "${image_hash} received... "
if ! docker tag "${image_hash}" "${DESTINATION_REGISTRY}/${image}" &> /dev/null; then
2020-12-23 18:39:02 +05:00
echo "FAIL"
exit
fi
echo -n "pushing... "
if ! docker push "${REGISTRY_TO_MIRROR}/${image}" &> /dev/null; then
2020-12-23 18:39:02 +05:00
echo "FAIL"
exit
fi
echo "OK"
docker image rm "${image}" &> /dev/null
docker image rm "${REGISTRY_TO_MIRROR}/${image}" &> /dev/null
2020-12-23 18:39:02 +05:00
}
2022-06-27 00:05:22 +05:00
env
2022-06-27 00:06:13 +05:00
# shellcheck disable=SC2154
echo "Secret test: ${drone_secret} or ${REGISTRY_PASSWORD}"
2022-06-27 00:05:22 +05:00
# Login to registry.
docker login -u "${REGISTRY_USER}" -p "${REGISTRY_PASSWORD}" "${DESTINATION_REGISTRY}"
2020-12-23 18:39:02 +05:00
# Mirror images.
for image in "${WHAT_TO_MIRROR[@]}"; do
mirror "${image}"
2020-12-23 18:39:02 +05:00
done