Skip to content

Add a GCP Pub/Sub CI workflow (Wolverine.Pubsub.Tests is not run in CI) #3191

Description

@jeremydmiller

Problem

There is no CI job for the GCP Pub/Sub transport. Every other transport has a workflow under .github/workflows/ (nats, mqtt, rabbitmq, kafka, pulsar, redis, azure-service-bus, aws, cosmosdb, …) and a matching CI* Nuke target, but GCP Pub/Sub has neither:

  • No .github/workflows/pubsub.yml (or gcp.yml).
  • No CIPubsub / CIGCP target in build/CITargets.cs (it jumps from CINATS to CIPulsar).

…even though the transport is fully built and tested locally:

  • Project: src/Transports/GCP/Wolverine.Pubsub (included in build/build.cs).
  • Tests: src/Transports/GCP/Wolverine.Pubsub.Tests — including InlineSendingAndReceivingCompliance, BufferedSendingAndReceivingCompliance, DurableSendingAndReceivingCompliance.
  • Emulator already wired up: the gcp-pubsub service in docker-compose.yml (Google Cloud CLI Pub/Sub emulator on :8085, project wolverine).

So GCP Pub/Sub regressions ship undetected.

Why this surfaced now

While fixing #3189 (the #3188 "storeless Solo == node 1" change collided NATS/MQTT reply subjects, which are keyed on the node number with no service discriminator), GCP Pub/Sub was found to have the identical pattern:

// PubsubTransport.cs:137
var responseName = $"{ResponseName}.{Math.Abs(runtime.DurabilitySettings.AssignedNodeNumber)}";

Two Solo services on one project now collide on the same response subscription — exactly the bug that broke the NATS/MQTT request/reply compliance suite. It went unnoticed for GCP only because there is no CI job to catch it. (Tracking the GCP code fix separately / alongside #3189; this issue is specifically about the missing CI coverage that let it slip.)

Proposed work

  1. Add a CIPubsub target to build/CITargets.cs, modeled on CINATS (build/CITargets.cs:362), pointing at Wolverine.Pubsub.Tests and running --framework net9.0.
  2. Add .github/workflows/pubsub.yml, modeled on nats.yml: push/pull_request on main + workflow_dispatch, .NET 8/9/10 setup, ./build.sh CIPubsub --framework net9.0, docker compose down on cleanup. (The gcp-pubsub emulator is started via the compose file the build already brings up; confirm the emulator host/port env — PUBSUB_EMULATOR_HOST=localhost:8085 — is set the way the tests expect.)
  3. Verify the GCP compliance suite is green against the emulator in CI, then keep it in the required set alongside the other transports.

Acceptance

Related: #3188, #3189.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions