docs: record production release evidence #34
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: 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" |