GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Retry CI bundler installs on rubygems.org blips by mikolalysenko · Pull Request #1828 · SocketDev/socket-patch

Conversation

@mikolalysenko

@mikolalysenko Mikola Lysenko (mikolalysenko) commented Oct 29, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

Problem

On 2026-10-29 the merge_group CI run for #1813 (run 40882178298, job hosted-e2e) failed in Setup Ruby and evicted the PR from the merge queue (removed 13:35:06, re-added 14:01:32, so about 27 minutes lost for that PR plus a rebuild of the entries behind it). It was the only merge_group failure in the last 24h (212 merge_group runs).

/opt/hostedtoolcache/Ruby/3.2.10/x64/bin/gem install bundler -v ~> 2.6.0
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    SocketError: Failed to open TCP connection to rubygems.org:443 (https://rubygems.org/quick/Marshal.4.8/bundler-2.6.9.gemspec.rz)
##[error]The process '/opt/hostedtoolcache/Ruby/3.2.10/x64/bin/gem' failed with exit code 1

Root cause

ruby/setup-ruby's bundler: input installs bundler with a single bare gem install. RubyGems has no retry, so one failed TCP connect to rubygems.org fails the required hosted-e2e leg and, through ci-ok, evicts the queue entry. This is the same class as the PyPI blip that scripts/pip-install-retry.sh covers and the setup-python download failure #1803 fixed.

Fix

  • New scripts/gem-install-retry.sh, modelled on pip-install-retry.sh: it runs gem install <args> up to 4 times with a growing pause and passes the args through unchanged, so pins stay pinned.
  • hosted-e2e: setup-ruby now gets bundler: 'none', and a new Install Bundler step runs gem-install-retry.sh bundler -v '~> 2.6.0' --no-document. That is the same requirement setup-ruby used (see the log above). As the highest installed bundler, it is the one the bundle binstub runs, so the >= 2.6 CHECKSUMS requirement still holds. The step prints bundle --version as a check.
  • e2e: the existing Install Bundler 1.x step's bare gem install goes through the same script. Behaviour is otherwise unchanged.

No test moves or is removed, and no required-check names change.

Proof

  • I ran the real install against rubygems.org with a scratch GEM_HOME: Successfully installed bundler-2.6.9, then bundle --version gave Bundler version 2.6.9.
  • I ran the script with a fake gem on PATH:
    • fail once, then succeed: a warning on attempt 1 and exit 0 on attempt 2.
    • always fail: 4 attempts, then ::error:: and exit 1.
    • no args: usage message and exit 2.
  • python3 scripts/check-tool-pins.py .github/workflows/ci.yml: all pinned.
  • python3 -m unittest discover -s scripts/tests: 384 tests OK.
  • YAML parses. actionlint and zizmor aren't available in this container.

The bundler: input on the e2e matrix's own setup-ruby step (2.x legs) still installs without a retry. Moving it means matching setup-ruby's per-version resolution leg by leg, so I left it out of this PR to keep the change small.


Generated by Claude Code


Note

Low Risk
CI-only resilience around bundler installation; no application or release behavior changes.

Overview
Adds scripts/gem-install-retry.sh, mirroring pip-install-retry.sh: up to four gem install attempts with backoff when rubygems.org flakes, without changing version pins.

hosted-e2e no longer relies on ruby/setup-ruby’s one-shot bundler install (bundler: 'none' plus a dedicated Install Bundler step via the retry script at ~> 2.6.0). The e2e matrix Install Bundler 1.x step uses the same wrapper instead of a bare gem install.

Setup-ruby bundler installs on other e2e 2.x matrix legs are unchanged in this PR.

Reviewed by Cursor Bugbot for commit 2a2d5f5. Configure here.


Generated by Claude Code

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@claude
Retry CI bundler installs on rubygems blips
2a2d5f5
ruby/setup-ruby's `bundler:` input installs bundler with one bare
`gem install`, and RubyGems has no retry of its own. A single failed
TCP connect to rubygems.org in hosted-e2e's Setup Ruby step failed the
merge_group run for #1813 and evicted it from the queue.

Install bundler in hosted-e2e through a new gem-install-retry.sh (the
pip-install-retry.sh pattern: 4 attempts, growing pause) instead, with
the same `~> 2.6.0` requirement setup-ruby used, and route the e2e
job's Bundler 1.x install through it too.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_011f9aeTA3DTuUZTYGYzv6KB
@mikolalysenko Mikola Lysenko (mikolalysenko) added the ci-janitor Opened by the CI janitor routine (flakes, redundant tests, CI perf) label Oct 29, 2026
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator Author

bugbot run


Generated by Claude Code

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 29, 2026
View reviewed changes

@cursor cursor Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 2a2d5f5. Configure here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mikolalysenko Mikola Lysenko (mikolalysenko) added the Ready for review Agent-verified: mergeable, CI green, Bugbot clean — awaiting human review label Oct 29, 2026
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator Author

Burn-down agent: labeled Ready for review at 2a2d5f5dea69298dd9b7bf104644698073e19854.

  • CI: all 51 checks on this head are success/skipped; PR is mergeable (only waiting on review).
  • Bugbot: reviewed this head, no issues.
  • For reviewers: CI-only change. hosted-e2e now installs Bundler ~> 2.6.0 through the new scripts/gem-install-retry.sh (4 attempts with backoff) instead of setup-ruby's one-shot install, and the e2e Bundler 1.x step uses the same wrapper.
  • Slack announcement not sent this run (the Slack send tool was unavailable); the next run will retry.

Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator Author

Final review brief

What it does. A single rubygems.org TCP blip during ruby/setup-ruby's one-shot gem install bundler failed hosted-e2e and evicted #1813 from the merge queue. This adds scripts/gem-install-retry.sh (a copy of the pip-install-retry.sh pattern: 4 attempts, 10/20/30 s pauses, args passed through) and routes the hosted-e2e Bundler 2.6 install and the e2e Bundler 1.x install through it. CI-only; no product code changes.

Risk. Low. Same Bundler requirement as before (~> 2.6.0, which is what bundler: '2.6' resolved to), no required-check names change, no tests moved.

Look here

  • ci.yml:2850-2863: bundler: 'none' on setup-ruby plus the new Install Bundler step (prints bundle --version).
  • ci.yml:1613: the Bundler 1.x leg now uses the script.
  • gem-install-retry.sh:20-31: the retry loop.

Verified

  • Read the full diff (2 files, +45/-4); the script matches pip-install-retry.sh line for line apart from the command, and is committed as mode 100755.
  • On this head, hosted-e2e ran (not gated off): its Install Bundler step and both production e2e steps passed, so the installed Bundler emits CHECKSUMS as the hosted rewrite needs.
  • Ran the script locally with a fake gem that fails once: warning on attempt 1, exit 0 on attempt 2, args passed through intact.
  • CI 51/51 (32 success, 19 skipped), ci-ok and clippy green; mergeable; no review threads. Bugbot reviewed this head: no issues. CHANGELOG.md untouched.

Changes I made. None.

Open questions. None blocking. Note: the Bundler 1.x matrix legs don't run on PR CI, so that one-line change is exercised only on the next run of those legs. The 2.x e2e legs still use setup-ruby's own unretried install (called out in the description as out of scope).

Auto-merge is armed: approving sends this straight to the merge queue.


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko
Mikola Lysenko (mikolalysenko) enabled auto-merge October 29, 2026 15:59
This was referenced Oct 29, 2026
CI perf (settings): merge queue builds 5 entries at a time — a 13-PR burst took 100 min to drain on a 21-min CI run (~21 min per PR past the 5th) #1248
Open
CI performance dashboard #1182
Open
Swarm health manager log #1382
Open
Tanmay182003
Tanmay Singla (Tanmay182003) approved these changes Oct 29, 2026
View reviewed changes
@mikolalysenko
Mikola Lysenko (mikolalysenko) added this pull request to the merge queue Oct 29, 2026
Merged via the queue into main with commit c8e26f6 Oct 29, 2026
51 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko
Mikola Lysenko (mikolalysenko) deleted the ci-janitor/retry-bundler-install branch October 29, 2026 20:19
This was referenced Oct 29, 2026
Retry pinned bundler installs in the e2e legs #1854
Merged
Depot runners losing connection mid-job evict merge-queue entries #1857
Closed
CI perf (settings): slow Depot 16-core hosts since 10-13 15:20 add ~1.5–2.5 min to the merge-queue critical path (~0.6k Linux job-min/day) #1512
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@cursor cursor[bot] cursor[bot] left review comments
@Tanmay182003 Tanmay Singla (Tanmay182003) Tanmay182003 approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

ci-janitor Opened by the CI janitor routine (flakes, redundant tests, CI perf) Ready for review Agent-verified: mergeable, CI green, Bugbot clean — awaiting human review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@mikolalysenko @Tanmay182003 @claude
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.