set -a CIRCLE_JOB="${CIRCLE_JOB:-}" ARCH="${ARCH:-$CIRCLE_JOB}" if [[ -z "$ARCH" ]] ; then echo "Defaulting arch to amd64" ARCH="amd64" fi BASE_IMAGE="${BASE_IMAGE:-${CIRCLE_PROJECT_REPONAME}}" if [[ -z "$BASE_IMAGE" ]] ; then echo "Defaulting image name to pihole" BASE_IMAGE="pihole" fi # The docker image will match the github repo path by default but is overrideable with CircleCI environment # BASE_IMAGE Overridable by Circle environment, including namespace (e.g. BASE_IMAGE=bobsmith/test-img:latest) CIRCLE_PROJECT_USERNAME="${CIRCLE_PROJECT_USERNAME:-unset}" HUB_NAMESPACE="${HUB_NAMESPACE:-$CIRCLE_PROJECT_USERNAME}" [[ $CIRCLE_PROJECT_USERNAME == "pi-hole" ]] && HUB_NAMESPACE="pihole" # Custom mapping for namespace [[ $BASE_IMAGE != *"/"* ]] && BASE_IMAGE="${HUB_NAMESPACE}/${BASE_IMAGE}" # If missing namespace, add one # Secondary docker tag info (origin github branch/tag) will get prepended also ARCH_IMAGE="$BASE_IMAGE" [[ $ARCH_IMAGE != *":"* ]] && ARCH_IMAGE="${BASE_IMAGE}:$ARCH" # If tag missing, add circle job name as a tag (architecture here) DOCKER_TAG="${CIRCLE_TAG:-$CIRCLE_BRANCH}" if [[ -n "$DOCKER_TAG" ]]; then # remove latest tag if used (as part of a user provided image variable) ARCH_IMAGE="${ARCH_IMAGE/:latest/:}" # Prepend the github tag(version) or branch. image:arch = image:v1.0-arch ARCH_IMAGE="${ARCH_IMAGE/:/:${DOCKER_TAG}-}" # latest- sometimes has a trailing slash, remove it ARCH_IMAGE="${ARCH_IMAGE/%-/}" fi # To get latest released, cut a release on https://github.com/pi-hole/docker-pi-hole/releases (manually gated for quality control) latest_tag='' if ! latest_tag=$(curl -sI https://github.com/pi-hole/docker-pi-hole/releases/latest | grep --color=never -i Location | awk -F / '{print $NF}' | tr -d '[:cntrl:]'); then print "Failed to retrieve latest docker-pi-hole release metadata" else if [[ "$DOCKER_TAG" == "$latest_tag" ]] ; then LATEST_IMAGE="$BASE_IMAGE:latest" fi fi MULTIARCH_IMAGE="$BASE_IMAGE:$DOCKER_TAG" set +a