ci(deploy): 镜像发布 - 原生多架构构建并复用提交镜像与缓存
This commit is contained in:
18
.github/scripts/resolve-image.sh
vendored
Normal file
18
.github/scripts/resolve-image.sh
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user