ci: drop EOL Rails 7.2 from the matrix - #228
Merged
Merged
Conversation
Rails 7.2 reached end of life on 2026-08-09 (endoflife.date/rails), so the SQLite matrix now tests Rails 8.0 and 8.1 only. The ActiveAdmin 4 include leg that pinned Rails 7.2.0 goes with it. Both `exclude:` rules are also removed. Their stated reason -- "ActiveAdmin 3.2.0 predates Rails 8 support" -- is stale: the matrix pins `~> 3.2.0`, which resolves to activeadmin 3.2.5, and that installs and passes the suite on both Rails 8.0.5.1 and 8.1.4 (66 examples, 0 failures each). The rules were hiding working coverage. The two PostgreSQL jobs move from Rails 8.0.0 to 8.1.0, both verified locally against a real PostgreSQL. The MySQL job stays on 8.0.0, which is supported until 2026-11-07, so one DB-backed job still covers the oldest supported Rails.
Fivell
force-pushed
the
chore/drop-eol-rails
branch
from
October 1, 2026 12:14
7589336 to
0807b1d
Compare
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.
Drops end-of-life Rails 7.2 from CI and removes two stale
exclude:rules that were suppressing working coverage.Why
Ruby stays
['3.3', '3.4', '4.0']and the gemspec is untouched (required_ruby_versionis already>= 3.3.0; theactiveadminandactiverecord-importruntime constraints are unchanged). No version bump, no release.Matrix: before / after
ruby3.3,3.4,4.0rails7.2.0,8.0.0,8.1.08.0.0,8.1.0activeadmin3.2.0,3.3.0,3.4.0,3.5.1exclude8.0.0 x 3.2.0,8.1.0 x 3.2.0include4.0.0.beta22on Rails7.2.0,8.0.0,8.1.04.0.0.beta22on Rails8.0.0,8.1.0Standalone jobs:
test-mysql(MySQL 8.0, AA 3.5.1)RAILS: '8.0.0'RAILS: '8.1.0'test-postgres(PostgreSQL 16, AA 3.5.1)RAILS: '8.0.0'RAILS: '8.1.0'test-postgres-aa4(PostgreSQL 16, AA 4.0.0.beta22)RAILS: '8.0.0'RAILS: '8.1.0'coverageNo
exclude:was added. In particular there is no Ruby 3.3 x Rails 8.1 exclude: the anonymous-parameter-forwardingSyntaxErrorthat motivates one exists only in Ruby 3.3.0, the first 3.3 release, andruby/setup-rubywithruby-version: '3.3'installs the newest 3.3 patch. Ruby 3.3 x Rails 8.1 is a valid cell.The ActiveAdmin 3.2.0 excludes were wrong — evidence
The two removed rules claimed "ActiveAdmin 3.2.0 predates Rails 8 support". The Gemfile pins
~> #{ENV['AA']}, so the3.2.0matrix entry resolves to activeadmin 3.2.5, which supports Rails 8. Resolved locally:Both suites pass:
So the rules are deleted rather than widened — they were excluding six green legs (3 Rubies x 2 Rails).
Standalone DB jobs
test-postgresandtest-postgres-aa4moved to Rails 8.1.0, both verified locally against a real PostgreSQL 17 instance with the sameDB/DB_HOST/DB_PORT/DB_USERNAME/DB_PASSWORDwiring the workflow uses. The 67th example isspec/import_spec.rb'sif ENV['DB'] == 'postgres'native-upsert case, so the adapter-specific path really did run:test-mysqlmoved toRAILS: '8.1.0'as well, so no job is left on Rails 8.0 (EOL 2026-11-07).This one could not be verified locally — no MySQL server was reachable on the dev machine (Homebrew
mysqlinstalled but stopped, and standing up an isolatedmysqldwas not possible there). Rather than push it unverified, it was proved on the runner first, in a throwaway branch and draft PR (#229, closed without merging): job log —66 examples, 0 failures, withmysql2 0.5.7built with native extensions and the dummy app configured for MySQL throughENV['DB']inspec/support/rails_template.rb. The 67-example counts in the PostgreSQL rows below are theENV['DB'] == 'postgres'native-upsert spec, so the numbers line up.Only after that result did the change land here.
The service blocks themselves (
mysql:8.0,postgres:16, theirenv,portsand health-checkoptions) are unchanged and are independent of the Rails version.Other checks
tasks/test.rakealready passes--skip-javascriptfor the AA 3 dummy app, so the Rails 8.1stale_when_importmap_changestrap is already handled at the generator; nothing to add.coveragejob is a standalone job with no matrix and noif:on matrix values, so it runs exactly once;deploy-coverage'sif:only gates onmaster+push. Unchanged.Local verification
All runs are
CI=true(the dummy app'sconfig.eager_load = ENV["CI"].present?makes it mandatory locally), Ruby via rbenv, SQLite unless noted.66 examples, 0 failures66 examples, 0 failures66 examples, 0 failures66 examples, 0 failures66 examples, 0 failures67 examples, 0 failures67 examples, 0 failures66 examples, 0 failures— on the runner, not locally (see above)Required run, verbatim: