Skip to content

release(ruby): run PostgreSQL tests and reject published versions #341

Description

@NikolayS

Severity

High — the publish workflow can validate an effectively untested gem.

Problem

.github/workflows/release-ruby.yml runs bundle exec rake test without provisioning PostgreSQL or setting PGQUE_TEST_DSN.

The shared Ruby test helper skips database-backed test classes when that variable is absent. As a result, the release dry-run can report success while skipping send/receive, cooperative consumer, reconnect/backlog, error-classification, NULL-message, retry/DLQ, and other release-critical integration behavior.

The workflow also checks only whether its namespaced Git tag exists. RubyGems already contains pgque 0.3.0.rc.1, published manually. A rerun with that source version could pass build validation and create ruby/v0.3.0.rc.1, then fail only at gem push because the gem version is immutable.

Expected fix

  • Provision a pinned supported PostgreSQL service in the Ruby build/dry-run job.
  • Generate/install the current PgQue SQL and set PGQUE_TEST_DSN before rake test.
  • Make the release job fail if any tests are skipped unexpectedly.
  • Check RubyGems version availability before artifact upload/tag creation, with a testable parser or API fixture.
  • Keep the publish job consuming the exact already-validated artifact.
  • Add actionlint/YAML coverage and document that a new version must be chosen after the manually published 0.3.0.rc.1.

This should stack on the namespaced-tag/OIDC correction in draft #323. External trusted-publisher/environment setup remains tracked separately in #328.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions