Files
planet/scripts/lib/docker-mirror.zsh
linkong 60eefb19c9
Some checks are pending
ci / backend (push) Waiting to run
ci / frontend (push) Waiting to run
ci / delivery (push) Blocked by required conditions
release / images (push) Waiting to run
release: bump version to 0.74.7
2026-09-17 17:30:54 +08:00

45 lines
1.8 KiB
Bash

#!/usr/bin/env zsh
docker_failure_allows_mirror() {
[ "${PLANET_DOCKER_MIRROR_FALLBACK:-1}" != 0 ] || return 1
local record="$(planet_error_record '' "$1")"
local code="${record%%$'\t'*}"
case "$code" in
P_DNS|P_NETWORK_TIMEOUT|P_CONNECTION_REFUSED|P_DOCKER_COMMAND_TIMEOUT) ;;
*) return 1 ;;
esac
grep -Eq 'process "/bin/sh -c|executor failed running' "$1" && return 1
# Package installation and daemon failures are not image-registry failures.
grep -Eiq 'load metadata|resolve source metadata|failed to resolve|fetch anonymous token|https?://[^ ]*/v2/|Pulling|Downloading' "$1"
}
resolve_build_mirror_args() {
local mirror_log="$(mktemp "$PLANET_STATE_DIR/docker-mirror.XXXXXX.log")"
DOCKER_MIRROR_BUILD_ARGS=()
if ! run_docker_observed "原镜像源不可达,验证备用镜像" \
"${PLANET_DOCKER_MIRROR_TIMEOUT:-120}" "$mirror_log" \
python3 "$SCRIPT_DIR/scripts/docker_mirror.py" build >/dev/null; then
cp "$mirror_log" "$AI_PROVIDER_BUILD_LOG_FILE"
return 1
fi
local assignment
while IFS= read -r assignment; do
DOCKER_MIRROR_BUILD_ARGS+=(--build-arg "$assignment")
done < "$mirror_log"
}
pull_database_mirrors() {
local -a services=()
local argument
for argument in "$@"; do
case "$argument" in postgres|redis) services+=("$argument") ;; esac
done
[ "${#services[@]}" -gt 0 ] || return 1
prepare_docker_build_proxy mirror || return 1
local mirror_log="$(mktemp "$PLANET_STATE_DIR/docker-mirror.XXXXXX.log")"
DOCKER_MIRROR_ERROR_LOG_FILE="$mirror_log"
run_docker_observed "原镜像源不可达,临时使用备用源" \
"${PLANET_COMPOSE_TIMEOUT:-180}" "$mirror_log" \
python3 "$SCRIPT_DIR/scripts/docker_mirror.py" pull "${services[@]}" >/dev/null
}