Skip to content

docs: record production release evidence #34

docs: record production release evidence

docs: record production release evidence #34

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
quality-and-tests:
name: Quality, unit, integration
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Format, lint, typecheck, Lua drift, docs
run: pnpm check
- name: Build declarations and ESM
run: pnpm build
- name: Unit and Docker integration suite
run: pnpm test
deterministic-faults:
name: Restart and Sentinel faults
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Install Redis server and Sentinel binary
run: sudo apt-get update && sudo apt-get install -y redis-server
- run: pnpm test:fault
redis-compatibility:
name: Redis ${{ matrix.redis }} / RESP${{ matrix.resp }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
redis: ["7.2", "7.4", "8.0"]
resp: [2, 3]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Exercise text, binary, script, and topology paths
env:
EFFECTMQ_COMPAT_REDIS_IMAGE: redis:${{ matrix.redis }}-alpine
EFFECTMQ_COMPAT_RESP: ${{ matrix.resp }}
run: pnpm exec vitest run src/RedisCompatibility.test.ts
packed-consumer:
name: Packed ESM consumer / Node ${{ matrix.node }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
node: [22, 24]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Pack and install every public export
run: pnpm verify:package
soak-smoke:
name: Maximum-batch soak smoke
runs-on: ubuntu-latest
timeout-minutes: 10
services:
redis:
image: redis:8.0-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 2s
--health-timeout 2s
--health-retries 20
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Soak and graceful shutdown smoke
env:
EFFECTMQ_SOAK_DURATION_MS: 15000
run: node --expose-gc node_modules/tsx/dist/cli.mjs scripts/soak.ts
release-gate:
name: Exact-commit release gate
if: always()
runs-on: ubuntu-latest
needs:
- quality-and-tests
- deterministic-faults
- redis-compatibility
- packed-consumer
- soak-smoke
steps:
- name: Require every production gate
env:
QUALITY: ${{ needs.quality-and-tests.result }}
FAULTS: ${{ needs.deterministic-faults.result }}
COMPATIBILITY: ${{ needs.redis-compatibility.result }}
PACKAGE: ${{ needs.packed-consumer.result }}
SOAK: ${{ needs.soak-smoke.result }}
run: |
test "$QUALITY" = success
test "$FAULTS" = success
test "$COMPATIBILITY" = success
test "$PACKAGE" = success
test "$SOAK" = success
echo "release gate passed for $GITHUB_SHA"