Repository navigation
Retry CI bundler installs on rubygems.org blips - #1828
Conversation
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) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011f9aeTA3DTuUZTYGYzv6KB
|
bugbot run Generated by Claude Code |
There was a problem hiding this comment.
✅ 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.
|
Burn-down agent: labeled Ready for review at
Generated by Claude Code |
Final review briefWhat it does. A single rubygems.org TCP blip during Risk. Low. Same Bundler requirement as before ( Look here
Verified
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 Auto-merge is armed: approving sends this straight to the merge queue. Generated by Claude Code |
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).Root cause
ruby/setup-ruby'sbundler:input installs bundler with a single baregem install. RubyGems has no retry, so one failed TCP connect to rubygems.org fails the requiredhosted-e2eleg and, throughci-ok, evicts the queue entry. This is the same class as the PyPI blip thatscripts/pip-install-retry.shcovers and the setup-python download failure #1803 fixed.Fix
scripts/gem-install-retry.sh, modelled onpip-install-retry.sh: it runsgem install <args>up to 4 times with a growing pause and passes the args through unchanged, so pins stay pinned.hosted-e2e:setup-rubynow getsbundler: 'none', and a new Install Bundler step runsgem-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 thebundlebinstub runs, so the>= 2.6CHECKSUMS requirement still holds. The step printsbundle --versionas a check.e2e: the existing Install Bundler 1.x step's baregem installgoes through the same script. Behaviour is otherwise unchanged.No test moves or is removed, and no required-check names change.
Proof
GEM_HOME:Successfully installed bundler-2.6.9, thenbundle --versiongaveBundler version 2.6.9.gemonPATH:::error::and exit 1.python3 scripts/check-tool-pins.py .github/workflows/ci.yml: all pinned.python3 -m unittest discover -s scripts/tests: 384 tests OK.The
bundler:input on thee2ematrix'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, mirroringpip-install-retry.sh: up to fourgem installattempts with backoff when rubygems.org flakes, without changing version pins.hosted-e2eno longer relies onruby/setup-ruby’s one-shot bundler install (bundler: 'none'plus a dedicated Install Bundler step via the retry script at~> 2.6.0). Thee2ematrix Install Bundler 1.x step uses the same wrapper instead of a baregem 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