diff --git a/.github/workflows/test-mongodb.yml b/.github/workflows/test-mongodb.yml index 796dbf3..9ba20a1 100644 --- a/.github/workflows/test-mongodb.yml +++ b/.github/workflows/test-mongodb.yml @@ -21,12 +21,7 @@ jobs: entry: # These Active Support versions pass quirks_mode, removed in JSON 3. - { ruby: '3.2', mongoid: '6.4.8', mongodb: '4.4', json: '~> 2.0' } - - { ruby: '3.2', mongoid: '7.2.3', mongodb: '4.4', json: '~> 2.0' } - - { ruby: '3.2', mongoid: '7.3.0', mongodb: '4.4', json: '~> 2.0' } - - { ruby: '3.3', mongoid: '7.3.0', mongodb: '5.0', json: '~> 2.0' } - { ruby: '3.4', mongoid: '7.5.2', mongodb: '5.0', json: '~> 2.0' } - - { ruby: '3.4', mongoid: '8.1.11', mongodb: '6.0', json: '~> 2.0' } - - { ruby: '3.4', mongoid: '8.1.11', mongodb: '7.0', json: '~> 2.0' } - { ruby: '3.4', mongoid: '8.1.11', mongodb: '8.0', json: '~> 2.0' } - { ruby: '3.3', mongoid: '~> 9.1', mongodb: '8.0', grape: '~> 3.2', json: '~> 3.0' } - { ruby: '3.4', mongoid: '~> 9.1', mongodb: '8.0', grape: '~> 4.0', json: '~> 3.0' } diff --git a/.github/workflows/test-postgresql.yml b/.github/workflows/test-postgresql.yml index fbaa6b8..f27084e 100644 --- a/.github/workflows/test-postgresql.yml +++ b/.github/workflows/test-postgresql.yml @@ -20,14 +20,9 @@ jobs: fail-fast: false matrix: entry: - # Active Support 6.x, 7.0, and 8.0 pass quirks_mode, removed in JSON 3. - - { ruby: '3.2', postgresql: '11', active_record: '~> 6.0.0', json: '~> 2.0' } + # Active Support 6.x and 8.0 pass quirks_mode, removed in JSON 3. - { ruby: '3.2', postgresql: '11', active_record: '~> 6.1.0', json: '~> 2.0' } - - { ruby: '3.2', postgresql: '14', active_record: '~> 7.0.0', json: '~> 2.0' } - { ruby: '3.3', postgresql: '14', active_record: '~> 7.2.0', json: '~> 3.0' } - - { ruby: '3.4', postgresql: '14', active_record: '~> 7.2.0', json: '~> 3.0' } - - { ruby: '3.4', postgresql: '15', active_record: '~> 8.0.2', json: '~> 2.0' } - - { ruby: '3.4', postgresql: '16', active_record: '~> 8.0.2', json: '~> 2.0' } - { ruby: '3.4', postgresql: '17', active_record: '~> 8.0.2', json: '~> 2.0' } - { ruby: '3.3', postgresql: '18', active_record: '~> 8.1', grape: '~> 3.2', json: '~> 3.0' } - { ruby: '3.4', postgresql: '18', active_record: '~> 8.1', grape: '~> 4.0', json: '~> 3.0' } diff --git a/AGENTS.md b/AGENTS.md index 9a9273a..c0ad07d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -44,7 +44,7 @@ Browser tests require Firefox. Selenium Manager provisions geckodriver when need ## Changes and Compatibility -Preserve both database adapters and the existing unique CI matrix combinations, including explicit Grape 3/4 coverage. Quote version strings in workflow YAML and validate workflow changes with `actionlint`. +Preserve both database adapters, representative legacy ORM major versions, and the modern Ruby/Grape 3/4 combinations in the six-job-per-adapter CI matrices. Avoid multiplying equivalent jobs across database server versions. Quote version strings in workflow YAML and validate workflow changes with `actionlint`. Keep JSON 2 constraints scoped to affected legacy matrix jobs through `JSON_VERSION`; modern jobs explicitly test JSON 3. Do not add a blanket JSON upper bound to the Gemfile or gemspec. diff --git a/CHANGELOG.md b/CHANGELOG.md index 9595ec4..fb5c208 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### 2.3.0 (Next) +* [#188](https://github.com/slack-ruby/slack-ruby-bot-server/pull/188): Reduce the database CI matrices from 22 to 12 jobs while retaining representative legacy ORM majors and modern Ruby/Grape 3/4 coverage - [@dblock](https://github.com/dblock), [@Copilot](https://github.com/apps/copilot-swe-agent). * [#186](https://github.com/slack-ruby/slack-ruby-bot-server/pull/186): Document persisted custom Team attributes for both adapters and Rails concern loading/reloading - [@dblock](https://github.com/dblock), [@Copilot](https://github.com/apps/copilot-swe-agent). * [#183](https://github.com/slack-ruby/slack-ruby-bot-server/pull/183): Add a `config.server_pages` block to configure page middleware options centrally without changing the installed library's defaults - [@dblock](https://github.com/dblock), [@Copilot](https://github.com/apps/copilot-swe-agent). * [#184](https://github.com/slack-ruby/slack-ruby-bot-server/pull/184): Add a configurable API application and separately mountable team read/registration endpoints, preserving the default API while supporting custom routes and registration-only applications - [@dblock](https://github.com/dblock), [@Copilot](https://github.com/apps/copilot-swe-agent). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b49c768..5dcf8e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,7 +39,9 @@ bundle exec rake For PostgreSQL, set `DATABASE_ADAPTER=activerecord`, `ACTIVERECORD_VERSION`, and `DATABASE_URL` instead. `GRAPE_VERSION` optionally constrains the Grape version for either adapter; without it, Bundler selects a compatible version. CI preserves the older compatibility combinations and adds explicit Grape 3 and 4 jobs with current ORM versions, including Ruby 4. Each database runs in a health-checked service container, while Firefox runs under Xvfb. Selenium Manager provisions the matching driver. -`JSON_VERSION` optionally constrains the development/test JSON dependency; otherwise it is unrestricted. CI uses JSON 2 for Mongoid 6-8 and Active Record 6.x, 7.0, and 8.0 because their Active Support versions pass `quirks_mode`, removed in JSON 3. Mongoid 9, Active Record 7.2, and Active Record 8.1 jobs explicitly test JSON 3. These selectors do not restrict the published gem's runtime dependencies. +CI runs six jobs per adapter: three representative legacy ORM/database stacks and three modern combinations (Ruby 3.3/Grape 3, Ruby 3.4/Grape 4, and Ruby 4/Grape 4). Mongoid retains 6.4, 7.5, 8.1, and 9.1; Active Record retains 6.1, 7.2, 8.0, and 8.1. Redundant database-server variants and older ORM minor combinations are omitted. A combination no longer appearing in CI is not by itself a change to the gem's supported runtime dependencies. + +`JSON_VERSION` optionally constrains the development/test JSON dependency; otherwise it is unrestricted. CI uses JSON 2 for Mongoid 6-8 and Active Record 6.1 and 8.0 because their Active Support versions pass `quirks_mode`, removed in JSON 3. Mongoid 9, Active Record 7.2, and Active Record 8.1 jobs explicitly test JSON 3. These selectors do not restrict the published gem's runtime dependencies. On Linux, install [Firefox](https://www.mozilla.org/firefox/) and `Xvfb`, then run: