Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -475,10 +475,10 @@ jobs:
runs-on: ${{ matrix.platform.runner }}
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
# ECR Public mirrors Docker Hub's official images without Docker Hub's anonymous-pull token
# endpoint, whose timeouts failed both musl legs at once. Pinned so the musl toolchain changes
# only by a reviewed bump.
MUSL_IMAGE: public.ecr.aws/docker/library/alpine:3.24@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6
# Pinned so the musl toolchain changes only by a reviewed bump. The digest is the same on every
# registry the pull step tries, so a fallback cannot change what is built.
MUSL_IMAGE_DIGEST: sha256:be2656061b536c1883c4034790e21d0a09c5aaaf51968b89368a3c0371ea2c9a # alpine 3.24.3
MUSL_IMAGE: rocksdb-musl-build
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -561,10 +561,17 @@ jobs:
- name: Pull musl build image
if: ${{ matrix.platform.target == 'linux-x64-musl' || matrix.platform.target == 'linux-arm64-musl' }}
shell: bash
# Each registry has failed anonymous pulls from shared runner IPs on its own: Docker Hub's
# token endpoint timed out, and ECR Public returned "Data limit exceeded".
run: |
for attempt in 1 2 3 4 5; do
docker pull "$MUSL_IMAGE" && exit 0
echo "docker pull failed (attempt $attempt); retrying in $((attempt * 15))s"
for attempt in 1 2 3; do
for repo in mirror.gcr.io/library/alpine public.ecr.aws/docker/library/alpine docker.io/library/alpine; do
if docker pull "$repo@$MUSL_IMAGE_DIGEST"; then
docker tag "$repo@$MUSL_IMAGE_DIGEST" "$MUSL_IMAGE"
exit 0
fi
echo "docker pull from $repo failed (attempt $attempt)"
done
sleep $((attempt * 15))
done
exit 1
Expand Down
Loading