Skip to content

Retry the Deno install in the deno test image - #1780

Merged
Mikola Lysenko (mikolalysenko) merged 1 commit into
mainfrom
ci-janitor/deno-image-retry
Oct 28, 2026
Merged

Mikola Lysenko (mikolalysenko) merged 1 commit into
mainfrom
ci-janitor/deno-image-retry

Conversation

@mikolalysenko

Copy link
Copy Markdown
Collaborator

Problem

The nightly CI run on main (https://github.com/SocketDev/socket-patch/actions/runs/40639505834) failed coverage-docker (deno) (job 122656048488): while building tests/docker/Dockerfile.deno, the Deno install script's release-zip download stalled for ~14 minutes at 8% and then died with curl: (56) Recv failure: Connection reset by peer. One CDN blip failed the whole image build, failed the job, and made ci-ok red for that run.

Docker coverage only runs on schedule / workflow_dispatch / CI_SCOPE=full, so this doesn't block merges. It's a known flake class (registry/CDN blips in image builds), and it's the only one of today's nightly failures with no open fix.

Root cause

curl -fsSL https://deno.land/install.sh | sh has no retry: the script fetches the zip once with its own curl, so a single network failure is fatal. Dockerfile.npm already retries the bun install for exactly this reason; the Deno install never got the same treatment.

Fix

  • Wrap the install in the same 3-attempt loop (10s/20s backoff) that Dockerfile.npm uses for bun.
  • Cap each attempt at 5 minutes with timeout 300, so a stalled download still leaves room for a retry inside the job's 30-minute budget (worst case is about 15.5 minutes). A healthy install takes seconds.
  • rm -rf /root/.deno between attempts so a partial install can't be left behind.
  • Require /root/.deno/bin/deno to exist before leaving the loop. If fetching install.sh itself fails, sh gets empty input and exits 0, which would otherwise count as a successful install.

Proof

I couldn't build the image in this session: there is no Docker daemon, and the egress proxy blocks deno.land. I checked the loop under dash, which is the image's /bin/sh, with stub commands in place of the install:

  • exit 56 three times: 3 attempts, then exit 1
  • an attempt that runs past the timeout: 3 attempts, then exit 1
  • success on the first attempt: ln runs, exit 0
  • failure, then success: 2 attempts, exit 0

The image is first built by this PR's nightly or full-scope coverage-docker (deno) / e2e-docker (deno) run.

Tests moved or removed

None.


Generated by Claude Code

The nightly coverage-docker (deno) job failed on 2026-10-28 because
the Deno install script's release-zip download stalled for 14 minutes
at 8% and then died with "curl: (56) Connection reset by peer". The
script has no retry of its own, so one CDN blip failed the whole image
build and turned the nightly CI run red.

Wrap the install in the same 3-attempt loop Dockerfile.npm uses for
bun, cap each attempt at 5 minutes so a stall still leaves room for a
retry inside the job's 30-minute budget, clear the partial ~/.deno
between attempts, and require the deno binary to exist before
breaking out (a failed fetch of install.sh pipes nothing into sh,
which exits 0).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011f9aeRq7topfPoVB2zUn1A
@cursor

cursor Bot commented Oct 28, 2026

Copy link
Copy Markdown

Bugbot is paused — your team has an unpaid invoice

Bugbot is paused because your team has an unpaid invoice.

Pay it from the billing page in the Cursor dashboard and Bugbot resumes automatically.

(requestId: a9744f6c-a3fc-4ee6-a670-2659e0a6580d)

@mikolalysenko Mikola Lysenko (mikolalysenko) added the ci-janitor Opened by the CI janitor routine (flakes, redundant tests, CI perf) label Oct 28, 2026
@mikolalysenko

Copy link
Copy Markdown
Collaborator Author

bugbot run


Generated by Claude Code

@cursor

cursor Bot commented Oct 28, 2026

Copy link
Copy Markdown

Bugbot is paused — your team has an unpaid invoice

Bugbot is paused because your team has an unpaid invoice.

Pay it from the billing page in the Cursor dashboard and Bugbot resumes automatically.

(requestId: deb04f54-42f8-4a91-a92a-27f90e25c28f)

Merged via the queue into main with commit b37b2f9 Oct 28, 2026
49 checks passed
@mikolalysenko
Mikola Lysenko (mikolalysenko) deleted the ci-janitor/deno-image-retry branch October 28, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-janitor Opened by the CI janitor routine (flakes, redundant tests, CI perf)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants