fix(cdn): align repository routing across pull zones

This commit is contained in:
Patrick Schratz 2026-08-13 14:06:46 +00:00
commit 9d1e8bec8c
No known key found for this signature in database
GPG key ID: 62050D5BC68AB6DC

View file

@ -18,35 +18,38 @@
# objects were replaced. The cost is a cold cache for everything else, which is
# why this is not used by the daily update path.
#
# All hostnames on the zone (cran.devxy.io, cran.allianceswisspass.devxy.io,
# cran.rpkgs.com) share pull zone 3857050, so one purge covers all of them.
# The public hostnames currently use separate pull zones, so callers must pass
# every zone that serves the repository.
#
# Usage:
# purge_cdn_zone.sh <BUNNYNET_API_KEY> <pull_zone_id>
# purge_cdn_zone.sh <BUNNYNET_API_KEY> <pull_zone_id> [<pull_zone_id>...]
#
set -euo pipefail
if (($# < 2)); then
echo "usage: $0 <api_key> <pull_zone_id>" >&2
echo "usage: $0 <api_key> <pull_zone_id> [<pull_zone_id>...]" >&2
exit 2
fi
api_key="$1"
zone_id="$2"
shift
echo "Purging BunnyCDN pull zone ${zone_id}"
for zone_id in "$@"; do
echo "Purging BunnyCDN pull zone ${zone_id}"
status=$(
curl -sS -o /tmp/purge_zone_response.txt -w '%{http_code}' -X POST \
-H "AccessKey: ${api_key}" \
-H "Content-Length: 0" \
"https://api.bunny.net/pullzone/${zone_id}/purgeCache"
)
response_file="/tmp/purge_zone_response_${zone_id}.txt"
status=$(
curl -sS -o "${response_file}" -w '%{http_code}' -X POST \
-H "AccessKey: ${api_key}" \
-H "Content-Length: 0" \
"https://api.bunny.net/pullzone/${zone_id}/purgeCache"
)
if [[ "${status}" != "200" && "${status}" != "204" ]]; then
echo "Purge of pull zone ${zone_id} failed with HTTP ${status}:" >&2
cat /tmp/purge_zone_response.txt >&2
exit 1
fi
if [[ "${status}" != "200" && "${status}" != "204" ]]; then
echo "Purge of pull zone ${zone_id} failed with HTTP ${status}:" >&2
cat "${response_file}" >&2
exit 1
fi
echo "Purged pull zone ${zone_id} (HTTP ${status})"
echo "Purged pull zone ${zone_id} (HTTP ${status})"
done