Repository navigation
build!: Drop Ruby 3.2 and Rails 7.1/7.2, fix CI and switch to release-please - #27
Merged
Merged
Conversation
combustion 1.7.0 only loads its Rails application inside Combustion.initialize!, so Rails.application is nil before that call. This broke the whole spec suite in CI.
json 3.0 contains breaking changes. Same pin as in drieam-oauth2.
Align the supported versions with drieam-oauth2: - Require Ruby >= 3.3 and actionpack/activerecord >= 8.0, < 9 - Test Ruby 3.3, 3.4 and 4.0 against Rails 8.0 and 8.1 - Regenerate the Appraisals and gemfiles for Rails 8.0 and 8.1 - Use actions/checkout v7 in CI BREAKING CHANGE: Ruby 3.2 and Rails 7.1/7.2 are no longer supported.
Same setup as drieam-oauth2. release-please opens a versioning PR after each merge to main and publishes the gem to RubyGems and the GitHub package registry once that PR is merged. The version file now holds the real version (2.0.1, the latest release).
Run on pushes to main and on pull requests, so PRs from forks are checked as well. Use the github output format for rubocop and brakeman so offenses show up inline on the PR, and run the linters on Ruby 3.4.
Recent versions of rubocop-rails and rubocop-performance deprecate loading them through require.
The -shm and -wal files are created and removed by every spec run, which leaves the working tree dirty.
Generated with gh actions-lock. Pins every action to a verified commit, as done in drieam-oauth2. Supersedes #26. Tracked in Drieam/SecDevOps#661
There was a problem hiding this comment.
🟡 Changes recommended
The workflow can publish a gem containing commits absent from its release tag, leaves release PRs without CI checks, and cannot recover failed or partial publication through reruns.
3 open issues
What changed in this PR
This PR fixes test initialization, raises the gem’s supported Ruby and Rails versions, and replaces release-triggered publishing with release-please automation.
Changes:
- Configure the test cache store inside Combustion initialization.
- Require Ruby 3.3+ and Rails 8+, pin
json < 3.0, and update the CI matrix. - Introduce release-please for versioning and dual-registry publishing, refresh lint configuration, and ignore SQLite sidecar files.
| File | Description |
|---|---|
spec/spec_helper.rb |
Configure caching after the Combustion app is initialized. |
release-please-config.json |
Configure Ruby releases and version-file updates. |
README.md |
Document the release-please publishing process. |
lib/keypairs/version.rb |
Align the version with the 2.0.1 release baseline. |
keypairs.gemspec |
Raise minimum Ruby/Rails versions and constrain JSON. |
gemfiles/rails_8_1.gemfile |
Define the Rails 8.1 dependency range. |
gemfiles/rails_8_0.gemfile |
Define the Rails 8.0 dependency range. |
gemfiles/rails_7_2.gemfile |
Remove the Rails 7.2 appraisal Gemfile. |
Appraisals |
Replace older Rails appraisals with Rails 8.0/8.1. |
.rubocop.yml |
Use plugin loading and target Ruby 3.3. |
.release-please-manifest.json |
Seed release tracking at 2.0.1. |
.gitignore |
Ignore SQLite sidecar files. |
.github/workflows/publish.yml |
Automate releases and publishing to both gem registries. |
.github/workflows/ci.yml |
Enable PR checks and update runtimes and lint output. |
Review effort: Balanced
Check out the commit release-please tagged instead of the triggering commit, so the gem always matches its release tag. Publishing to GitHub Packages and RubyGems in their own jobs means a failed upload can be retried with "Re-run failed jobs", reusing the release outputs, without pushing the gem twice.
LuukvH
approved these changes
Nov 5, 2026
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.


Warning
Breaking change: drops support for Ruby 3.2 and Rails 7.1/7.2 (
build!:commit). release-please will release this as 3.0.0.Important
Apply Drieam/Terraform-Common#1526 first. Branch protection still requires the old
rspec (3.2, rails_7_1)-style checks, which no longer run.Summary
Fixes the broken CI and aligns the repo with drieam-oauth2.
Commits:
test:configure the cache store inside the combustion initializer. This is the actual CI fix. combustion 1.7.0 only loads its Rails app insideCombustion.initialize!.build:pinjsonto< 3.0(same as drieam-oauth2)build!:drop Ruby 3.2 and Rails 7.1/7.2, test Ruby 3.3/3.4/4.0 on Rails 8.0/8.1ci:switch to release-please (still publishes to RubyGems and GitHub Packages)ci:run on pull requests, use--format githubfor rubocop/brakeman, lint on Ruby 3.4chore:load rubocop extensions asplugins:chore:stop tracking the sqlite-shm/-walfiles that every spec run deletesci:add.github/workflows/actions.lock(supersedes ci: Generate workflow lockfile #26, tracked in Drieam/SecDevOps#661). Without it, CI fails to start withstartup_failure.Evidence
Before: every rspec job on
mainfails while loadingspec_helper:After (local): 100 examples, 0 failures on each combination:
CI on this PR: all 6 rspec jobs, rubocop and brakeman pass.
Merge Danger
Door: one-way
Once 3.0.0 is published, the release can't be taken back. Apps on Ruby 3.2 or Rails 7.x stay on 2.0.1.
Blast Radius: consumers
json < 3.0pin stops apps from moving to json 3.x while they use keypairs.RUBYGEMS_AUTH_TOKENsecret still exists.