Skip to content

ci: add GitHub Actions build workflow - #16

Merged
jbutte merged 1 commit into
mainfrom
ci-github-actions
Sep 17, 2026
Merged

jbutte merged 1 commit into
mainfrom
ci-github-actions

Conversation

@jbutte

@jbutte jbutte commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

The fork has never had working CI. .travis.yml points at the defunct travis-ci.org, pins Ruby 2.5–2.7 and rspec-core 3.8/3.9, and filters on branches: only: [master, travis] — which doesn't match main, so it wouldn't fire even if Travis still existed. Every change to this fork has landed unverified.

This adds build.yml and deletes .travis.yml.

The matrix

Five legs. Each varies exactly one value from the primary combination, so a red leg names its own cause rather than requiring a bisect:

Ruby redis-rb redis server rspec-core what it covers
3.4 6.0.0 7 3.13.6 primary
3.2 6.0.0 7 3.13.6 the gemspec's Ruby floor
3.4 5.4.1 7 3.13.6 redis-rb 5.x still in range (>= 5.0, < 7.0)
3.4 6.0.0 6 3.13.6 older redis server / RESP3 negotiation
3.4 6.0.0 7 3.12.3 older rspec-core

Deliberately not a cross product — that's 5 jobs instead of 24, and every leg earns its place.

Notable choices

  • RSPEC_CORE / REDIS_GEM are job-level env, not step-level. The gemspec reads them when CI is set, so they must hold for both bundle install and bundle exec rake. Set on the setup step alone (as upstream does), the gems resolved at install time differ from those loaded at run time.
  • build-complete aggregate gate. Matrix leg names embed version strings, so wiring them individually into branch protection breaks whenever the matrix moves. One stable check name avoids that.
  • No bundler-cache. Dependencies vary per leg via env vars, but setup-ruby's cache key wouldn't include them — legs would restore each other's gems. Correctness over a few seconds.
  • fail-fast: false — for a fork tracking upstream, seeing which combinations break in one run is the point.
  • concurrency cancel on PRs only, so main keeps a complete history.
  • Actions are SHA-pinned with version comments, re-resolved rather than copied from upstream (major tags move).

Redis service containers get an explicit redis-cli ping health check so tests can't start against a cold server.

refs DE-1818

Test plan

  • All 5 test legs plus lint and build-complete appear and pass on this PR
  • After merge, wire build-complete as a required status check (only once it's reported at least once — wiring a never-run check blocks every PR)

🤖 Generated with Claude Code

The fork has had no CI: .travis.yml targets the defunct travis-ci.org
with Ruby 2.5-2.7 and rspec-core 3.8/3.9, and its branch filter no
longer matches any branch here. Every change has landed unverified.

Adds lint plus a 5-leg test matrix. Each leg varies exactly one value
from the primary combination (Ruby 3.4, redis-rb 6.0.0, redis 7,
rspec-core 3.13.6) so a red leg names its own cause: the Ruby 3.2
floor, redis-rb 5.4.1, redis server 6, and rspec-core 3.12.3.

RSPEC_CORE and REDIS_GEM are job-level env so the gemspec pins hold
for bundle install and bundle exec alike. build-complete is a single
stable check name to wire into branch protection, since matrix leg
names embed version strings.

Deletes .travis.yml.

refs DE-1818

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jbutte
jbutte merged commit 9380bf7 into main Sep 17, 2026
8 checks passed
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