Files
ttstd-infinite-canvas/.github/scripts/resolve-image.sh

19 lines
734 B
Bash

#!/usr/bin/env bash
set -euo pipefail
image_ref=${1:?image reference is required}
error_file=$(mktemp)
trap 'rm -f "$error_file"' EXIT
if digest=$(docker buildx imagetools inspect "$image_ref" --format '{{.Manifest.Digest}}' 2>"$error_file"); then
[[ "$digest" =~ ^sha256:[0-9a-f]{64}$ ]] || { echo "Invalid existing image digest" >&2; exit 1; }
printf 'found=true\ndigest=%s\n' "$digest" >> "${GITHUB_OUTPUT:?}"
elif grep -Fxq "ERROR: $image_ref: not found" "$error_file" \
|| grep -Eqi '^ERROR:.*: (manifest unknown|name unknown)(:.*)?$' "$error_file"; then
echo 'found=false' >> "${GITHUB_OUTPUT:?}"
else
# 鉴权、网络、限流错误不是缓存未命中,必须阻止发布。
cat "$error_file" >&2
exit 1
fi