Skip to content

Modernize CI/test runner: Appraisal-based matrix mirroring solid-process#134

Merged
serradura merged 4 commits into
mainfrom
modernize-ci-matrix
May 23, 2026
Merged

Modernize CI/test runner: Appraisal-based matrix mirroring solid-process#134
serradura merged 4 commits into
mainfrom
modernize-ci-matrix

Conversation

@serradura

Copy link
Copy Markdown
Member

Summary

  • Replaces the per-Rails subdirectory gemfiles/rails_X.Y/Gemfile layout with an Appraisals file + auto-generated gemfiles/rails_X_Y.gemfile, matching the solid-process gem layout.
  • Expands the CI matrix to Ruby 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 4.0, head × Rails 6.0, 6.1, 7.0, 7.1, 7.2, 8.0, 8.1, edge (gated per Ruby/Rails compatibility).
  • Preserves the ENABLE_TRANSITIONS=true/false matrix dimension.
  • Adds bin/setup, bin/matrix, and a rake matrix task that loops every applicable appraisal × both transitions modes.
  • Drops Rails 5.2 from the matrix (no longer in solid-process's range; u-case runtime has no hard Rails dep).
  • Drops the CodeClimate coverage upload step (was hardcoded; reintroduce per preferred provider — Qlty/CodeClimate — as a follow-up).

Test infra fixes discovered while wiring this up

  • test/test_helper.rb required pry-byebug unconditionally, which blocked any env without the dev gem. Removed.
  • test/micro/case/result_test.rb#test_inspect hard-coded the pre-Ruby-3.4 hash inspect format ({:k=>v}). Now derives the expected string from Hash#inspect so it works across Ruby versions.

Open follow-ups (not in this PR)

  • required_ruby_version in the gemspec still says >= 2.2.0 — bumping to >= 2.7 would match the new CI floor.
  • Add a coverage uploader (Qlty/CodeClimate) when a token is available.
  • appraisal install only generated rails_8_1.gemfile and rails_edge.gemfile locally (Ruby 4.0 is the only Ruby on the dev box, and the Appraisals file gates older Rails to older Rubies, mirroring solid-process). CI regenerates the rest per Ruby version via bundle exec appraisal install.

Test plan

  • CI passes (or surfaces real Ruby/Rails-combo regressions that can be addressed in follow-up commits)
  • bin/setup then bin/matrix runs locally end-to-end on at least one Ruby version
  • Locally verified on Ruby 4.0.1: bundle exec rake matrix runs rails-8-1 + rails-edge × transitions true/false → 133 tests, 0 failures (4 jobs)

🤖 Generated with Claude Code

serradura and others added 2 commits May 23, 2026 14:32
- Replace per-Rails subdirectory gemfiles with Appraisal-driven setup
- Add Appraisals file gated on RUBY_VERSION (rails 6.0..8.1 + edge)
- Rewrite GitHub Actions matrix to Ruby 2.7..4.0+head, conditional Rails steps
- Preserve ENABLE_TRANSITIONS true/false axis as a CI matrix dimension
- Add bin/matrix and rake matrix task to run the full local matrix
- Drop pry-byebug from test_helper (dev-only); simplify SimpleCov gating
- Fix result_test inspect assertion to be Ruby-version agnostic (3.4 hash format)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Generated on Ruby 4.0; CI regenerates the remaining ones per Ruby version.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@serradura serradura self-assigned this May 23, 2026
serradura and others added 2 commits May 23, 2026 15:08
- Add id-token: write permission to the test job for OIDC auth
- Upload coverage to Qlty on Ruby 3.4 + transitions=true, push events only
- Replace CodeClimate maintainability/coverage badges with Qlty equivalents
  in both README.md and README.pt-BR.md

Assumes the qlty.sh project lives at gh/serradura/projects/u-case;
adjust the badge URLs if the project is created under a different slug.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The repo uses a token secret instead of OIDC, so the id-token: write
permission is no longer needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@serradura serradura merged commit 80fd57a into main May 23, 2026
16 checks passed
@serradura serradura deleted the modernize-ci-matrix branch May 23, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant