Skip to content

[OMBU-821] Run CI as a dual-boot matrix and bump Postgres to 18.3 - #21

Merged
JuanVqz merged 1 commit into
mainfrom
feature/OMBU-821-ci-matrix
Aug 20, 2026
Merged

[OMBU-821] Run CI as a dual-boot matrix and bump Postgres to 18.3#21
JuanVqz merged 1 commit into
mainfrom
feature/OMBU-821-ci-matrix

Conversation

@JuanVqz

@JuanVqz JuanVqz commented Aug 20, 2026

Copy link
Copy Markdown
Member

Why

The two CI jobs, test-rails-current and test-rails-next, were near-duplicates
that differed only in BUNDLE_GEMFILE. Every change had to be made twice.

Postgres in CI was also pinned to 11.6-alpine, seven majors behind production.
Production was upgraded from 15.17 to 18.3 today, so CI now matches it.

What changed

  • One test job with matrix: [Gemfile, Gemfile.next] and fail-fast: false,
    so a failure in one boot still reports the other. Follows
    skunk.fyi's workflow.
  • Postgres 11.6-alpine -> 18.3-alpine, matching production.
  • actions/checkout@v1 -> @v4.
  • ruby-version: "4.0.6" -> ruby-version-file: .tool-versions, so the Ruby
    version lives in one place.
  • bundler-cache: true replaces the hand-rolled gem install bundler +
    bundle install. It resolves against BUNDLE_GEMFILE and caches each boot
    separately.
  • Dropped bundle update rails from the next-boot job. Both lockfiles are
    committed and bundle check passes against each, so there is nothing to
    resolve at CI time.
  • Dropped bin/setup, which re-ran bundler, db:prepare, log:clear and
    restart immediately before the db:setup that followed it.
  • Dropped cat config/database.yml, a debugging leftover.
  • Hoisted the shared env block to job level and added timeout-minutes: 20.

The two nearly identical jobs differed only in BUNDLE_GEMFILE, so collapse
them into one matrix over [Gemfile, Gemfile.next] with fail-fast disabled,
matching skunk.fyi's workflow.

Postgres goes from 11.6 to 18.3 to match production, which was upgraded from
15.17 to 18.3 today.

Other changes that come with following skunk.fyi:

- checkout@v1 -> checkout@v4
- ruby-version: "4.0.6" -> ruby-version-file: .tool-versions, so the version
  lives in one place
- bundler-cache: true instead of hand-rolled `gem install bundler` +
  `bundle install`. It resolves against BUNDLE_GEMFILE and caches each boot
  separately. The next job's `bundle update rails` is dropped: both lockfiles
  are committed and satisfied, so there is nothing to resolve at CI time
- drop `bin/setup`, which re-runs bundler, db:prepare, log:clear and
  restart on top of the db:setup that follows it
- drop `cat config/database.yml`, a debugging leftover
- hoist the shared env block to job level
- add timeout-minutes: 20

No Lint step, unlike skunk.fyi: rubocop is in neither lockfile here.

Also ignore .worktrees/, used for local git worktrees.
@JuanVqz
JuanVqz merged commit 2efccde into main Aug 20, 2026
2 checks passed
@JuanVqz
JuanVqz deleted the feature/OMBU-821-ci-matrix branch August 20, 2026 21:37
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