wip
[skip ci]
This commit is contained in:
92
check.sh
92
check.sh
@@ -23,52 +23,96 @@ if [ -z "${TARGET}" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "${REPO_URL}" ]; then
|
||||
REPO_URL="https://hub.docker.com/v2/repositories"
|
||||
fi
|
||||
|
||||
if [ -z "${BASE_REPO_URL}" ]; then
|
||||
BASE_REPO_URL="${REPO_URL}"
|
||||
fi
|
||||
|
||||
if [ -z "${TARGET_REPO_URL}" ]; then
|
||||
TARGET_REPO_URL="${REPO_URL}"
|
||||
fi
|
||||
|
||||
if [ -z "${BASE_REPO_USERNAME}" && -n "${REPO_USERNAME}" ]; then
|
||||
if [ -z "${BASE_REGISTRY_USERNAME}" && -n "${REGISTRY_USERNAME}" ]; then
|
||||
BASE_REPO_USERNAME="${REPO_USERNAME}"
|
||||
fi
|
||||
|
||||
if [ -z "${BASE_REPO_PASSWORD}" && -n "${REPO_PASSWORD}" ]; then
|
||||
if [ -z "${BASE_REGISTRY_PASSWORD}" && -n "${REGISTRY_PASSWORD}" ]; then
|
||||
BASE_REPO_PASSWORD="${REPO_PASSWORD}"
|
||||
fi
|
||||
|
||||
|
||||
if [ -z "${TARGET_REPO_USERNAME}" && -n "${REPO_USERNAME}" ]; then
|
||||
if [ -z "${TARGET_REGISTRY_USERNAME}" && -n "${REGISTRY_USERNAME}" ]; then
|
||||
TARGET_REPO_USERNAME="${REPO_USERNAME}"
|
||||
fi
|
||||
|
||||
if [ -z "${TARGET_REPO_PASSWORD}" && -n "${REPO_PASSWORD}" ]; then
|
||||
if [ -z "${TARGET_REGISTRY_PASSWORD}" && -n "${REGISTRY_PASSWORD}" ]; then
|
||||
BASE_REPO_PASSWORD="${REPO_PASSWORD}"
|
||||
fi
|
||||
|
||||
if [ -z "${REGISTRY_API}" ]; then
|
||||
REGISTRY_API = 'docker'
|
||||
fi
|
||||
|
||||
# add "library/" if its a "official" docker image (it has no username)
|
||||
if [ -z "${BASE_REGISTRY_API}" ]; then
|
||||
BASE_REGISTRY_API = '${REGISTRY_API}'
|
||||
fi
|
||||
|
||||
if [ -z "${TARGET_REGISTRY_API}" ]; then
|
||||
TARGET_REGISTRY_API = '${REGISTRY_API}'
|
||||
fi
|
||||
|
||||
if [ -z "${REGISTRY_URL}" ]; then
|
||||
REGISTRY_URL="https://hub.docker.com/v2"
|
||||
# repositories
|
||||
fi
|
||||
|
||||
if [ -z "${BASE_REPO_URL}" ]; then
|
||||
BASE_REGISTRY_URL="${REPO_URL}"
|
||||
fi
|
||||
|
||||
if [ -z "${TARGET_REPO_URL}" ]; then
|
||||
TARGET_REGISTRY_URL="${REPO_URL}"
|
||||
fi
|
||||
|
||||
# remove trailing /
|
||||
BASE_REGISTRY_URL="${BASE_REGISTRY_URL%/}"
|
||||
TARGET_REGISTRY_URL="${TARGET_REGISTRY_URL%/}"
|
||||
|
||||
# add "library/" if its a "official" docker image (no username is provided)
|
||||
echo "${BASE}" | grep -q "/" || BASE="library/${BASE}"
|
||||
echo "${TARGET}" | grep -q "/" || TARGET="library/${TARGET}"
|
||||
|
||||
# if no tag is give default to latest
|
||||
# if no tag is given default to latest
|
||||
echo "${BASE}" | grep -q ":" || BASE="${BASE}:latest"
|
||||
echo "${TARGET}" | grep -q ":" || TARGET="${TARGET}:latest"
|
||||
|
||||
# split repo into user reponame and tag
|
||||
IFS='/:'
|
||||
read -ra parts <<< "${BASE_REPO}"
|
||||
BASE_REPO_USER="${parts[0]}"
|
||||
BASE_REPO_NAME="${parts[1]}"
|
||||
BASE_REPO_TAG="${parts[2]}"
|
||||
|
||||
# move the tag to its own var and remove it from the repo name
|
||||
BASE_TAG=$(echo "${BASE}" | sed 's/[^:]*://')
|
||||
TARGET_TAG=$(echo "${TARGET}" | sed 's/[^:]*://')
|
||||
read -ra parts <<< "${TARGET_REPO}"
|
||||
TARGET_REPO_USER="${parts[0]}"
|
||||
TARGET_REPO_NAME="${parts[1]}"
|
||||
TARGET_REPO_TAG="${parts[2]}"
|
||||
|
||||
BASE_REPO=$(echo "${BASE}" | sed 's/:.*//')
|
||||
TARGET_REPO=$(echo "${TARGET}" | sed 's/:.*//')
|
||||
if [ -n "${BASE_REGISTRY_USERNAME}" && -n "${BASE_REGISTRY_PASSWORD}" \ ]
|
||||
|
||||
# make a shared login header if REGISTRY_API REGISTRY_USERNAME and REGISTRY_PASSWORD are the same for BASE and TARGET
|
||||
if [ "${BASE_REGISTRY_API}" == "${TARGET_REGISTRY_API}" \
|
||||
&& "${BASE_REGISTRY_USERNAME}" == "${TARGET_REGISTRY_USERNAME}" \
|
||||
&& "${BASE_REGISTRY_PASSWORD}" == "${TARGET_REGISTRY_PASSWORD}" \
|
||||
&& "${BASE_REGISTRY_URL}" == "${TARGET_REGISTRY_URL}" \
|
||||
&& -n "${BASE_REGISTRY_USERNAME}" \
|
||||
&& -n "${BASE_REGISTRY_PASSWORD}" \
|
||||
]; then
|
||||
if [ "${BASE_REGISTRY_API}" == "docker" ]; then
|
||||
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d "{\"username\": \"${BASE_REGISTRY_USERNAME}\", \"password\": \"${BASE_REGISTRY_PASSWORD}\"}" ${BASE_REGISTRY_URL}/users/login/ | jq -r .token)
|
||||
BASE_HEADER="Authorization: JWT ${TOKEN}"
|
||||
TARGET_HEADER="Authorization: JWT ${TOKEN}"
|
||||
elif [ "${BASE_REGISTRY_API}" == "gitea" ]; then
|
||||
BASE_HEADER="Authorization: token ${BASE_REGISTRY_PASSWORD}"
|
||||
TARGET_HEADER="Authorization: token ${TARGET_REGISTRY_PASSWORD}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${BASE_REGISTRY_API}" == "docker" ]; then
|
||||
BASE_URL="${BASE_REPO_URL}/${BASE_REPO_USER}/${BASE_REPO_NAME}/tags/${BASE_REPO_TAG}"
|
||||
elif [ "${BASE_REGISTRY_API}" == "gitea" ]; then
|
||||
|
||||
fi
|
||||
|
||||
# build the url to the repo
|
||||
BASE_URL="${BASE_REPO_URL}/${BASE_REPO}/tags/${BASE_TAG}"
|
||||
|
||||
Reference in New Issue
Block a user