From f67d7ca6bfe93e83ae5e6d3fc5305d98377f135f Mon Sep 17 00:00:00 2001 From: Ales Rechtorik Date: Fri, 9 Oct 2026 23:34:33 +0200 Subject: [PATCH] ci(release): pull the node-pty build image from Google's Docker Hub mirror v0.15.23's bundle failed twice at the node-pty build: Docker Hub refused the shared runner (unauthenticated pull rate limit, then an auth outage). The image now comes from mirror.gcr.io first, with retries, and Docker Hub only as the fallback. --- .github/workflows/release.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 89b461c9e2..8d74aef09c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -89,7 +89,17 @@ jobs: version="$(node -p "require('./apps/server/node_modules/node-pty/package.json').version")" out="${RUNNER_TEMP}/node-pty-linux-x64" mkdir -p "$out" - docker run --rm -v "$out:/out" -e "NODE_PTY_VERSION=$version" node:22-bullseye bash -ec ' + # Docker Hub refuses unauthenticated pulls from shared runners at times (rate limit, auth + # outages: v0.15.23 failed twice), so the image comes from Google's Hub mirror first. + image="" + for candidate in mirror.gcr.io/library/node:22-bullseye node:22-bullseye; do + for attempt in 1 2 3; do + if docker pull -q "$candidate"; then image="$candidate"; break 2; fi + sleep $((attempt * 10)) + done + done + [ -n "$image" ] || { echo "no node:22-bullseye image could be pulled"; exit 1; } + docker run --rm -v "$out:/out" -e "NODE_PTY_VERSION=$version" "$image" bash -ec ' mkdir /w && cd /w && npm init -y >/dev/null npm install --no-audit --no-fund "node-pty@${NODE_PTY_VERSION}" cp node_modules/node-pty/build/Release/pty.node /out/pty.node