Repository navigation
ci: drop EOL Rails 7.2 from the matrix - #54
Merged
Merged
Conversation
Rails 7.2 reached end of life on 2026-08-09 (endoflife.date/rails), so the three Rails 7.2 legs were testing an unsupported release. The matrix keeps Rails 8.0 (EOL 2026-11-07) and 8.1 (EOL 2027-10-10). All four activeadmin entries are kept: 3.2.5, 3.3.0, 3.4.0 and 3.5.2 all resolve against both Rails 8.0.5.1 and 8.1.4 and pass the suite, so nothing had to be excluded. The Gemfile's RAILS_VERSION fallback pointed at '~> 7.1.0', which is EOL too and is what a plain `bundle install` picked up locally; it now matches the matrix floor. CI always sets RAILS_VERSION, so this only affects local runs. The coverage-badge steps stay gated on the single ruby 4.0 / Rails '~> 8.1.0' / AA '~> 3.5' leg, which is still present.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Why
Rails 7.2 reached end of life on 2026-08-09 (endoflife.date/rails), so a third of the CI matrix was spent proving the gem works against an unsupported Rails. This drops those legs.
Heads-up for the next pass: Rails 8.0 goes EOL on 2026-11-07, about five weeks out. It is kept here because it is still supported today, but it is the next thing to remove.
Matrix
Before — 3 ruby x 3 rails x 4 activeadmin = 36 legs:
3.3,3.4,4.0~> 7.2.0,~> 8.0.0,~> 8.1.0~> 3.2,~> 3.3,~> 3.4,~> 3.5After — 3 ruby x 2 rails x 4 activeadmin = 24 legs:
3.3,3.4,4.0(unchanged)~> 8.0.0,~> 8.1.0~> 3.2,~> 3.3,~> 3.4,~> 3.5(unchanged)Ruby stays as it was: 3.3 is EOL 2027-03-31 (security-only) and is the floor, matching the gemspec's
required_ruby_version >= 3.3.0. The three-segment Rails pins are kept deliberately — a two-segment~> 8.0means>= 8.0, < 9.0and would silently resolve to 8.1, so the "Rails 8.0" leg would not be testing Rails 8.0.No
exclude:rules were added. In particular Ruby 3.3 x Rails 8.1 is a good cell and stays: the anonymous-parameter-forwardingSyntaxErrorthat looks like a Ruby 3.3 problem exists only in 3.3.0, the first 3.3 patch, andruby/setup-rubywithruby-version: '3.3'installs the newest patch. Verified below on 3.3.12.No ActiveAdmin version was dropped
Every ActiveAdmin minor still in the matrix resolves against both remaining Rails versions.
bundle installon Ruby 3.4.10, with the AA requirement pinned three-segment so the resolver cannot skip forward to 3.5:~> 8.0.0~> 8.1.0~> 3.2.0~> 3.3.0~> 3.4.0~> 3.5.0Eight for eight, no resolver error to quote. The gemspec's
activeadmin '>= 3.0', '< 4.0'runtime constraint is untouched — narrowing a tested range is not evidence a consumer broke.Worth knowing, and left alone here: the matrix's own AA pins are two-segment, so
~> 3.2,~> 3.3and~> 3.4all resolve to activeadmin 3.5.2 today. All four AA legs are therefore testing the same ActiveAdmin. That is pre-existing and orthogonal to dropping Rails 7.2, so it is not changed in this PR, but tightening those to~> 3.2.0/~> 3.3.0/~> 3.4.0would make the dimension mean what it says. The table above is the evidence that doing so would be green.Coverage badge gating
The badge steps are gated on
matrix.ruby == '4.0' && matrix.rails == '~> 8.1.0' && matrix.activeadmin == '~> 3.5'. All three values survive the change, so the conjunction still selects exactly one of the 24 legs — onecoverage-badgeartifact, which is whatdeploy-coveragedownloads by name.Local verification
Run with
CI=true(the harness needs it) via rbenv. Every run is the full suite against a real headless Chrome.~> 8.1.0~> 3.5~> 8.1.0~> 3.5~> 8.1.0~> 3.5~> 8.1.0~> 3.2.0~> 8.0.0~> 3.2.0~> 8.0.0~> 3.5Seven full-suite runs, 0 failures, and no
Ferrum::ProcessTimeoutErrorin any of them — the documented flake did not reproduce locally this time, consistent with the note inspec/rails_helper.rb.Neither documented dummy-app trap applied: this repo hand-writes
spec/dummy/test_application.rbrather than runningrails new, so there is no generatedApplicationControllerfor Rails 8.1'sstale_when_importmap_changesto land in and no--skip-javascriptfix was needed.Also in here
Gemfile: theRAILS_VERSIONfallback was'~> 7.1.0'— EOL since 2025-10-01 and not even a matrix value, so a bare localbundle installpulled an unsupported Rails. Now'~> 8.0.0', matching the matrix floor. CI always setsRAILS_VERSION, so this changes nothing in CI.CHANGELOG.md: one line under## [Unreleased].Not touched: the gemspec (
required_ruby_versionis already>= 3.3.0, theactiveadminconstraint stays wide), the gem version, and the README — it carries no supported-versions table to correct.