Skip to content

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

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

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

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"