Repository navigation
chore(deps): Bump redis from 8.10.1 to 8.10.2 in /tests/integration/brokers/redis-streams in the minor-and-patch group across 1 directory #253
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: integration-brokers | |
| # Live broker integration suites — Phase B from the test-coverage | |
| # audit. Each suite brings up a real broker in Docker (MinIO, | |
| # Mosquitto, Redpanda, RabbitMQ, NATS, Redis, gRPC echo, k3s) and | |
| # runs scenarios against the live socket. Matrix-parallel so wall | |
| # clock ≈ wall clock of the slowest suite (Kafka, ~30s), not the | |
| # sum of all eight. | |
| # | |
| # Triggers identical in shape to the cluster `integration.yml`: | |
| # - Pushes to `develop` + PRs (into `develop`, or `main` for the release) | |
| # - Manual dispatch | |
| # - Nightly cron at 03:30 UTC on `develop` (the default branch), | |
| # offset from integration.yml's 03:00 so the two don't fight for | |
| # the same runner pool | |
| on: | |
| # Heavy live-broker Docker matrix. Runs on `develop` pushes and on PRs | |
| # (into `develop`, or into `main` for the release), nightly on `develop` | |
| # (the default branch, via the schedule below), and on dispatch. | |
| push: | |
| branches: [develop] | |
| paths: | |
| - 'src/**' | |
| - 'tests/integration/brokers/**' | |
| - 'scripts/integration-compose.mjs' | |
| - 'package.json' | |
| - '.bun-version' | |
| - 'bun.lock' | |
| - 'tsconfig.json' | |
| - '.github/workflows/integration-brokers.yml' | |
| pull_request: | |
| branches: [main, develop] | |
| paths: | |
| - 'src/**' | |
| - 'tests/integration/brokers/**' | |
| - 'scripts/integration-compose.mjs' | |
| - 'package.json' | |
| - '.bun-version' | |
| - 'bun.lock' | |
| - 'tsconfig.json' | |
| - '.github/workflows/integration-brokers.yml' | |
| workflow_dispatch: | |
| schedule: | |
| # Nightly run. Every broker image is pinned now and Dependabot moves | |
| # the pins as PRs that run this matrix (#1597), so an upstream image | |
| # regression arrives attributed to a bump rather than here. What the | |
| # night still catches is the part that floats by design — the runner | |
| # images install the brokers manifest unfrozen, so a driver patch | |
| # inside a declared range lands underneath a run — plus any flake. | |
| # 03:30 UTC, half-hour offset from integration.yml's 03:00. | |
| - cron: '30 3 * * *' | |
| # Least privilege, stated rather than inherited: the repository default is | |
| # read-only today, but a settings flip would otherwise hand a write token to | |
| # a job that installs and runs the whole dependency tree. #621 | |
| permissions: | |
| contents: read | |
| jobs: | |
| broker: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| # fail-fast=false so a single broker regression doesn't mask | |
| # the status of the others. Each suite gets its own green/red | |
| # in the PR view. | |
| fail-fast: false | |
| matrix: | |
| # `dir` is the directory under tests/integration/brokers/, which is | |
| # also the docker-compose filename suffix and the name the driver | |
| # takes. There used to be a second `npm` column mapping it to a | |
| # per-suite script name, needed only because redis-streams ran through | |
| # a short `redis` script; `scripts/integration-compose.mjs` takes the | |
| # directory name directly, so the mapping is gone (#559). | |
| # | |
| # `image` is the display label — the one thing nothing can derive, and | |
| # the reason this list still exists. It is not a second source of | |
| # truth: `tests/unit/ci/IntegrationBrokerSuites.test.ts` fails when | |
| # this matrix and the tree disagree in either direction, so a backend | |
| # added without a leg here is a red test rather than a suite that | |
| # silently never runs. | |
| broker: | |
| - { dir: s3, image: "MinIO" } | |
| - { dir: mqtt, image: "Mosquitto" } | |
| - { dir: kafka, image: "Redpanda" } | |
| - { dir: amqp, image: "RabbitMQ" } | |
| - { dir: nats, image: "NATS" } | |
| - { dir: redis-streams, image: "Redis Streams" } | |
| - { dir: grpc, image: "gRPC echo" } | |
| - { dir: k8s, image: "k3s" } | |
| - { dir: postgres, image: "PostgreSQL" } | |
| - { dir: mariadb, image: "MariaDB" } | |
| - { dir: libsql, image: "libSQL (sqld)" } | |
| - { dir: mssql, image: "SQL Server 2022" } | |
| - { dir: mongodb, image: "MongoDB" } | |
| - { dir: cassandra, image: "Cassandra" } | |
| - { dir: dynamodb, image: "DynamoDB Local" } | |
| - { dir: email, image: "GreenMail (SMTP + IMAP)" } | |
| # Postgres-wire certifications (#401): the existing Postgres | |
| # stores against a different server, not new backends. | |
| - { dir: cockroachdb, image: "CockroachDB (pg wire)" } | |
| - { dir: yugabytedb, image: "YugabyteDB (pg wire)" } | |
| name: ${{ matrix.broker.image }} (${{ matrix.broker.dir }}) | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Setup Bun | |
| # Only needed to run the compose driver — the actual scenarios | |
| # run INSIDE the Docker containers. | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| # Docker is preinstalled on `ubuntu-latest`. Surface the | |
| # version in the log so a future Docker-on-Actions outage | |
| # is debuggable. | |
| - name: Show Docker version | |
| run: docker version | |
| - name: Run ${{ matrix.broker.image }} suite | |
| # The driver passes `--exit-code-from runner`, which propagates | |
| # the runner's exit status from inside the container, so a | |
| # failing scenario turns this step red. | |
| # | |
| # The matrix value reaches the script through `env:` rather than being | |
| # interpolated into it. It was never an exposure — the matrix is a | |
| # literal in this file — but an expression inside a `run:` body is | |
| # substituted before bash parses it, so the safe cases and the unsafe | |
| # ones are written identically, and only one of them is checkable. | |
| # `tests/unit/ci/WorkflowHygiene.test.ts` therefore forbids all of them. | |
| env: | |
| BROKER_DIRECTORY: ${{ matrix.broker.dir }} | |
| run: bun run test:integration:broker "$BROKER_DIRECTORY" | |
| - name: Capture container logs on failure | |
| if: failure() | |
| # Dump every container's stdout/stderr so a flaky scenario is | |
| # debuggable from the workflow logs alone — no need to re-run | |
| # locally and pray for repro. JSON-formatted by JsonLogger where | |
| # applicable. Through the driver so the compose path is built in | |
| # exactly one place. | |
| env: | |
| BROKER_DIRECTORY: ${{ matrix.broker.dir }} | |
| run: bun scripts/integration-compose.mjs "$BROKER_DIRECTORY" --logs || true | |
| - name: Tear down | |
| if: always() | |
| env: | |
| BROKER_DIRECTORY: ${{ matrix.broker.dir }} | |
| run: bun run test:integration:broker:teardown "$BROKER_DIRECTORY" |