Skip to content

Commit 09da545

Browse files
committed
Retry the e2e legs' pinned bundler installs
#1828 moved hosted-e2e's bundler install off setup-ruby's `bundler:` input, which runs one bare `gem install` with no retry, after a single failed TCP connect to rubygems.org evicted #1813 from the merge queue. The shared e2e steps still installed every 2.x/4.x pinned bundler (and e2e_gem's 2.5 floor) the same way: the bundler 4.0.21 gem leg in the merge-queue `e2e` job, plus six legs in nightly e2e-extended/e2e-full. Set `bundler: 'none'` and install every pinned bundler through scripts/gem-install-retry.sh, folding in the existing 1.x step. A two-part version keeps the `~> X.Y.0` requirement setup-ruby derived for it; a three-part pin stays exact. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011f9aeRXHaoEzZbpeYNu2xM
1 parent c8e26f6 commit 09da545

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,19 +1598,27 @@ jobs:
15981598
# Bundler-era legs pin their own Ruby (`ruby:`): bundler <= 2.2
15991599
# needs Ruby <= 3.3 and 1.17-2.1 need Ruby <= 3.1 (`untaint`).
16001600
ruby-version: ${{ matrix.ruby || '3.2.10' }}
1601-
# The legs pin their bundler (`bundler:`) so a capstone never rides
1602-
# whatever bundler the runner's Ruby ships; bundler 1.x is not
1603-
# installable through setup-ruby, see the next steps. e2e_gem keeps
1604-
# the 2.5 floor.
1605-
bundler: ${{ startsWith(matrix.bundler, '1.') && 'none' || matrix.bundler || '2.5' }}
1601+
# Bundler comes from the next step, which retries rubygems.org
1602+
# blips; setup-ruby's own install is a single bare `gem install`
1603+
# (and cannot install bundler 1.x at all).
1604+
bundler: 'none'
16061605
bundler-cache: false
16071606

1608-
- name: Install Bundler 1.x
1609-
if: startsWith(matrix.bundler, '1.')
1607+
# The legs pin their bundler (`bundler:`) so a capstone never rides
1608+
# whatever bundler the runner's Ruby ships; e2e_gem keeps the 2.5
1609+
# floor. A two-part version gets the `~> X.Y.0` requirement setup-ruby's
1610+
# `bundler:` input used for it; a three-part one stays exact.
1611+
- name: Install Bundler
1612+
if: matrix.suite == 'e2e_gem' || matrix.bundler != ''
16101613
shell: bash
16111614
env:
1612-
BUNDLER_TEST_VERSION: ${{ matrix.bundler }}
1613-
run: scripts/gem-install-retry.sh bundler -v "$BUNDLER_TEST_VERSION" --no-document
1615+
BUNDLER_TEST_VERSION: ${{ matrix.bundler || '2.5' }}
1616+
run: |
1617+
case "$BUNDLER_TEST_VERSION" in
1618+
*.*.*) requirement="$BUNDLER_TEST_VERSION" ;;
1619+
*) requirement="~> $BUNDLER_TEST_VERSION.0" ;;
1620+
esac
1621+
scripts/gem-install-retry.sh bundler -v "$requirement" --no-document
16141622
16151623
# Installing a bundler does not make `bundle` run it: with no lockfile
16161624
# to read, RubyGems' binstub activates the HIGHEST installed bundler,

0 commit comments

Comments
 (0)