fix: wait for release builder platforms
This commit is contained in:
@@ -69,13 +69,32 @@ docker buildx create --name "${builder}" --driver docker-container \
|
||||
--buildkitd-flags "${buildkitd_flags}" --use >/dev/null
|
||||
builder_created=true
|
||||
|
||||
platforms=$(docker buildx inspect "${builder}" --bootstrap 2>&1)
|
||||
for platform in linux/amd64 linux/arm64; do
|
||||
if ! grep -Fq "${platform}" <<<"${platforms}"; then
|
||||
echo "Builder ${builder} does not support ${platform}; refusing partial release." >&2
|
||||
exit 1
|
||||
# A newly-created rootless worker can publish its native platform before it has
|
||||
# observed the just-registered binfmt handler. Do not mistake that brief
|
||||
# startup state for a partial-release-capable builder.
|
||||
platforms=''
|
||||
supports_all=false
|
||||
for attempt in {1..10}; do
|
||||
platforms=$(docker buildx inspect "${builder}" --bootstrap 2>&1)
|
||||
supports_all=true
|
||||
for platform in linux/amd64 linux/arm64; do
|
||||
if ! grep -Fq "${platform}" <<<"${platforms}"; then
|
||||
supports_all=false
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ ${supports_all} == true ]]; then
|
||||
break
|
||||
fi
|
||||
if [[ ${attempt} -lt 10 ]]; then
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
if [[ ${supports_all} != true ]]; then
|
||||
echo "Builder ${builder} does not support both required platforms; refusing partial release." >&2
|
||||
printf '%s\n' "${platforms}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tags=(--tag "${repository}:${tag}")
|
||||
if [[ ${also_latest} == true ]]; then
|
||||
|
||||
Reference in New Issue
Block a user